Python 枚举和 for 循环输出
Python enumerate and for loops output
我对以下代码有 2 个问题:
- 为什么我在 for 循环后从 enum_l1 丢失 (0, 1) 并从 enum_l2 丢失 (0, 3)?
- 如果我不把前2个打印作为注释,我将看不到最后2个打印(简而言之,程序只会显示“enum_l1 before:”和“enum_l2之前:”没有“enum_l1 之后:”和“enum_l2 之后:”)。反之亦然。为什么?为什么我需要添加才能看到此代码中的所有 4 个打印件?
list1 = [1,2,3]
list2 = [3,1,2]
enum_l1 = enumerate(list1)
#print("enum_l1 before: ", list(enum_l1))
enum_l2 = enumerate(list2)
#print("enum_l2 before: ", list(enum_l2))
for count1, value1 in enum_l1:
for count2, value2 in enum_l2:
print("enum_l1 after: ", list(enum_l1))
print("enum_l2 after: ", list(enum_l2))
输出:
enum_l1 before: [(0, 1), (1, 2), (2, 3)]
enum_l2 before: [(0, 3), (1, 1), (2, 2)]
enum_l1 after: [(1, 2), (2, 3)]
enum_l2 after: [(1, 1), (2, 2)]
谢谢。
enum_l1
是一个迭代器。在循环中,您提取第一个元素 (0,1)
,然后打印迭代器 enum_l1
的状态而不是打印 count1, value1
,它错过了第一个实例。
您在循环内看到的行为等同于:
enum_l1 = enumerate(list1)
print(next(enum_l1))
print(list(enum_l1))
enumeration
创建迭代器对象。当你用它初始化一个列表时(在 print 语句中完成),它会消耗迭代器。在那之后,return 不再有值。
我对以下代码有 2 个问题:
- 为什么我在 for 循环后从 enum_l1 丢失 (0, 1) 并从 enum_l2 丢失 (0, 3)?
- 如果我不把前2个打印作为注释,我将看不到最后2个打印(简而言之,程序只会显示“enum_l1 before:”和“enum_l2之前:”没有“enum_l1 之后:”和“enum_l2 之后:”)。反之亦然。为什么?为什么我需要添加才能看到此代码中的所有 4 个打印件?
list1 = [1,2,3]
list2 = [3,1,2]
enum_l1 = enumerate(list1)
#print("enum_l1 before: ", list(enum_l1))
enum_l2 = enumerate(list2)
#print("enum_l2 before: ", list(enum_l2))
for count1, value1 in enum_l1:
for count2, value2 in enum_l2:
print("enum_l1 after: ", list(enum_l1))
print("enum_l2 after: ", list(enum_l2))
输出:
enum_l1 before: [(0, 1), (1, 2), (2, 3)]
enum_l2 before: [(0, 3), (1, 1), (2, 2)]
enum_l1 after: [(1, 2), (2, 3)]
enum_l2 after: [(1, 1), (2, 2)]
谢谢。
enum_l1
是一个迭代器。在循环中,您提取第一个元素 (0,1)
,然后打印迭代器 enum_l1
的状态而不是打印 count1, value1
,它错过了第一个实例。
您在循环内看到的行为等同于:
enum_l1 = enumerate(list1)
print(next(enum_l1))
print(list(enum_l1))
enumeration
创建迭代器对象。当你用它初始化一个列表时(在 print 语句中完成),它会消耗迭代器。在那之后,return 不再有值。