【问题标题】:list in python is empty [duplicate]python中的列表为空[重复]
【发布时间】:2020-12-24 21:26:57
【问题描述】:
m = ['a', 'b', 'c', 'd']
n = list(range(1,5))
l = zip(m,n)
x = list(l)
print(x)
print(list(l))

第二个print 是一个空列表。为什么?

为什么不能得到与第一个 print 相同的输出?

【问题讨论】:

  • 在 Python 3 中 zip 对象是生成器。一旦使用它们就会耗尽。
  • 具体来说,x = list(l) 耗尽了生成器 l。然后,当你尝试重用l 时,你得到的数据什么都没有。如果最后一行是print(list(zip(m, n))),它可以工作,因为那将是一个 new 生成器。有关更多详细信息,请参阅此问题所针对的骗子。
  • zip() 返回一个迭代器,更像是在遍历循环时使用索引。在循环之外,您无法访问索引/迭代器。有关更多信息和示例,您可以阅读文档 -docs.python.org/3.3/library/functions.html#zip

标签: python list


【解决方案1】:

Zip 返回一个迭代器。一旦你消费了迭代器,它就会继续返回空。

如果您使用 list() 使用迭代器,那么您也会看到一个空列表。

https://realpython.com/python-zip-function/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多