python - Python枚举和for循环输出
问题描述
我对以下代码有 2 个问题:
- 为什么在 for 循环之后我会从 enum_l1 中丢失 (0, 1) 并从 enum_l2 中丢失 (0, 3)?
- 如果我不将前 2 个打印作为注释,我将看不到最后 2 个打印(简而言之,程序将只显示 "enum_l1 before:" 和 "enum_l2 before:" 而没有 "enum_l1 after:" 和 "enum_l2 after :")。反之亦然。为什么?为什么我需要添加才能查看此代码中的所有 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)
然后打印错过第一个实例count1, value1
的迭代器的状态,而不是打印。enum_l1
您在循环中看到的行为相当于:
enum_l1 = enumerate(list1)
print(next(enum_l1))
print(list(enum_l1))
推荐阅读
- sql - 是否有一个 tSQL 函数在每次更改后创建一个计数器,例如由 Value1 排序的 Value2
- php - 如何访问 Codeigniter 关联数组中的单个值
- python - 无法使用相对导入访问模块
- scala - 如何从 Spark 中的分区拼花文件中读取某个日期范围
- swift - 从 UICollectionViewCell 中点击按钮时,如何引用 UITableViewCell?
- android - 使用导航组件取消操作点击通知
- apache-flink - Flink:将收回的 SQL 转换为附加的 SQL,仅使用 SQL 来提供临时表
- java - Tomcat 上的虚拟主机
- javascript - 本机 Javascript 多个事件到多个元素
- android - 重命名领域数据库文件