【问题标题】:When getting values from a list ,the same function doesn't fetch data twice?(python)从列表中获取值时,相同的函数不会两次获取数据?(python)
【发布时间】:2015-02-20 12:19:09
【问题描述】:
>>> movement = ((x,y)for x in range(-1,2) for y in range (-1,2) if (x,y)!=(0,0))
>>> for x,y in movement:
        print x,y


-1 -1
-1 0
-1 1
0 -1
0 1
1 -1
1 0
1 1
>>> for a,b in movement:
        print a,b


>>> for x,y in movement:
        print x,y


>>>

这发生在终端和空闲(我做错了什么还是应该发生?)

【问题讨论】:

  • Not function ,相同的代码没有获取它。

标签: list python-2.7 iterator


【解决方案1】:

您正在创建一个 generator 对象 (https://wiki.python.org/moin/Generators)。这意味着您可以只对其进行一次迭代——这就是它第一次像宣传的那样工作的原因。

将机芯“制造商”更改为此,它可以工作;现在它创建了一个列表,而不是generator

movement = [(x,y)for x in range(-1,2) for y in range (-1,2) if (x,y)!=(0,0)]

稍微详细一点;在链接页面上是这样的:

事实上,我们可以将列表推导式变成生成器表达式 通过用括号替换方括号 ("[ ]")。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-10-13
    • 1970-01-01
    • 1970-01-01
    • 2015-02-28
    • 1970-01-01
    • 2021-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多