python两层for循环嵌套的执行过程_python使用for...else跳出双层嵌套循环的方法实例...

背景

周末在写一个爬虫时,遇到这样一种场景:从搜索结果中下载指定数量的文件

例如:搜索结果中共分为10页展示,加起来一共50条数据,现在要做的是从50条数据中下载指定数量的数据

为了实现这个功能,开始我是这样想的:

1、依次遍历10页数据,并且把每页的数据都追加到同一个列表中,这样的话,请求完10页数据后,这个列表中就共含了所有结果;

2、然后再从这个大列表中提取指定数量的数据进行下载就行了

这种方法确实可行,但是在运行过程中发现一个问题:程序运行速度太慢了,原因是无论你想下载多少条数据,都会先把所有数据请求下来并追加到列表中,这个过程实在是太耗时了,而且也不合理

所以换一种思路:要下载n条数据,就只提取n条,不提前把所有数据请求下来

详细实现方法

上面举的例子,可以抽象为如下功能

首先有一个嵌套的列表

[[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20]]

然后提取这个列表中的数据到一个新版的列表中,例如取前3个数字、前5个数字或者前8个数字

可以通过双层for循环来实现,另外要注重设置条件来跳出循环,如下

source = [[1,2,3,4,5],[6,7,8,9,10],[11,12,13,14,15],[16,17,18,19,20]]

target = []

def get_data(source, count):

for i in range(0, len(source)+1):

temp = source[i]

for j in temp:

target.append(j)

if len(target) >= count:

break

else:

continue

break

t = get_data(source, 6)

print(target)

source代表原列表;count代表提取数字的个数

根据菜鸟教程的提示, for ... else 的意思如下:

1、for 中的语句和普通的没有区别,else 中的语句会在循环正常执行完的情况下执行(即 for 不是通过 break 跳出而中断的);

2、如果for是由于break中断的,则不会执行else语句

来分析下count为不同值时的运行过程及结果

1、count=3

当count=3时,得到如下结果

target = [1, 2, 3]

source中共含4个子列表,每个子列表共含5个数字;

先遍历外层for循环,当遍历到第一个子列表时,就能够满足内层for循环中断的条件了,即:当提取到第一个子列表的数字3时,target的长度等于3,满足len(target)>=count,跳出内层for循环

由于此时不是正常退出内层for循环,所以不会执行后面的else语句(ps:这里else语句下是执行continue指令,也就是继续遍历外层for循环),然后继续执行else后的berak语句,跳出外层for循环

综上,得到 target = [1, 2, 3] 的结果

2、count=8

当count=3时,得到如下结果

target = [1, 2, 3, 4, 5, 6, 7, 8]

同样,先取出外层for循环的第一个子列表,第一个子列表只有5个数字,当遍历完后,target的长度等于5,不满足len(target)>=count

此时内层for循环正常结束第一轮遍历,由于for循环正常结束,所以执行else下的语句,也就是执行continue指令,这里的continue是针对外层for循环的,也就是说继续取出外层for循环的第二个子列表

当第二个子列表遍历到第三个数字时,target的长度等于8,满足len(target)>=count,,跳出内层for循环

同理,由于此时不是正常退出内层for循环,所以不会执行后面的else语句,然后继续执行else后的berak语句,跳出外层for循环

综上,得到 target =[1, 2, 3, 4, 5, 6, 7, 8] 的结果

总结

到此这篇关于python使用for...else跳出双层嵌套循环的文章就简介到这了,更多相关python for else跳出双层嵌套循环内容请搜索乐购源码以前的文章或继续浏览下面的相关文章希望大家以后多多支持乐购源码!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 在 Python 中,DataFrame 是一种二维表格数据结构,可以使用 pandas 模块进行处理。针对 DataFrame 对象的循环,可以使用 for 循环,以及一些相关的方法。 举个例子,假设有如下的 DataFrame: ``` import pandas as pd data = {'name': ['Alice', 'Bob', 'Charlie', 'David'], 'age': [25, 32, 18, 47], 'gender': ['F', 'M', 'M', 'M']} df = pd.DataFrame(data) ``` 如果要遍历这个 DataFrame,可以使用 iterrows() 方法,该方法会返回每一行的索引和数据: ``` for index, row in df.iterrows(): print(index, row['name'], row['age'], row['gender']) ``` 此外,还可以使用 itertuples() 方法,该方法会返回一个命名元组,包含每一行的数据: ``` for row in df.itertuples(): print(row.Index, row.name, row.age, row.gender) ``` 需要注意的是,在循环中使用 DataFrame 的值时,最好使用 loc 或 iloc 方法,以避免引用副本而不是视图。 另外,Python 中的 for 循环还支持 else 分支,表示当循环正常结束时执行的语句。例如: ``` for i in range(3): print(i) else: print('Loop finished') ``` 这段代码会输出: ``` 0 1 2 Loop finished ``` 如果在循环中使用了 break 语句,则不会执行 else 分支。 ### 回答2: 在Python中,DataFrame是pandas库中非常重要和常用的数据结构之一。它类似于电子表格或数据库表格,用于存储和处理二维的带标签数据。可以使用DataFrame来处理大量的数据,并进行各种数据操作和分析。 在DataFrame中使用for循环可以遍历DataFrame中的每一行数据。可以使用iterrows()方法来实现这一点,该方法会返回一个生成器,用于逐行遍历DataFrame。 下面是一个例子,展示如何使用for循环遍历DataFrame中的数据: ``` import pandas as pd # 创建一个包含三列的DataFrame data = {'Name': ['Alice', 'Bob', 'Charlie'], 'Age': [25, 30, 35], 'City': ['New York', 'London', 'Tokyo']} df = pd.DataFrame(data) # 通过for循环遍历DataFrame中的每一行 for index, row in df.iterrows(): print(f"Name: {row['Name']}, Age: {row['Age']}, City: {row['City']}") ``` 这段代码会输出每行数据的姓名、年龄和所在城市。 此外,Python中的for循环还支持else语句。在for循环中,如果没有遇到break语句中断循环,则会执行else语句块的代码。在DataFrame中,可以将else语句用于在循环结束后执行某些特定的操作。例如,可以在遍历DataFrame中的数据时,如果找到了特定的值,就break退出循环,否则执行else语句的代码。 希望以上的回答能对您有帮助。 ### 回答3: dataframe for循环是指在Python使用pandas库中的DataFrame对象进行循环遍历操作。DataFrame是一种二维表格数据结构,类似于Excel中的表格,可以用来存储和处理大量的数据。 在Python中,可以使用for循环遍历DataFrame中的每一行或每一列数据。使用DataFrame的iterrows()方法可以按行遍历数据,其返回的是每一行的索引值和对应的数据。示例如下: ```python import pandas as pd # 创建一个DataFrame data = {'Name': ['Tom', 'John', 'Mike', 'Emily'], 'Age': [25, 32, 18, 27], 'City': ['Beijing', 'London', 'New York', 'Paris']} df = pd.DataFrame(data) # 使用for循环按行遍历DataFrame for index, row in df.iterrows(): print("Index:", index) print("Name:", row['Name']) print("Age:", row['Age']) print("City:", row['City']) print() ``` 此外,还可以使用DataFrame的iteritems()方法按列遍历数据,其返回的是每一列的列名和对应的数据。示例如下: ```python import pandas as pd # 创建一个DataFrame data = {'Name': ['Tom', 'John', 'Mike', 'Emily'], 'Age': [25, 32, 18, 27], 'City': ['Beijing', 'London', 'New York', 'Paris']} df = pd.DataFrame(data) # 使用for循环按列遍历DataFrame for column, data in df.iteritems(): print("Column:", column) print(data) print() ``` 注意:在使用DataFrame进行循环遍历时,要注意保持数据类型的一致性,确保能够正确地处理数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值