Python:在列表中附加一个函数?

2024-09-29 23:33:26 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,谢谢你看我的问题!我最近被介绍给生成器,我读了关于“pythonyield关键字解释”的about。根据我的理解,yield是动态生成的,不能被索引,并且在执行yield命令之后,它会记住它在哪里停止(如果我错了,请纠正我,我对这个还不熟悉)。在

我的问题是为什么:

from itertools import combinations

x = [['4A'],['5A','5B','5C'],['7A','7B']]

y = list()

for combination in x:
    for i in range(1,len(combination)+1):
        y.append(list(combinations(combination,i)))
print y # [[('4A',)], [('5A',), ('5B',), ('5C',)], 
        # [('5A', '5B'), ('5A', '5C'), ('5B', '5C')], 
        # [('5A', '5B', '5C')], [('7A',), ('7B',)], [('7A', '7B')]]

但这行不通:

^{pr2}$

既然我是在y产生后直接将这些组合附加到y上,为什么当它以列表形式附加时,它是有效的,但是当我正常地这样做时,它就不起作用了?在


Tags: infromimport命令for动态range关键字
1条回答
网友
1楼 · 发布于 2024-09-29 23:33:26

当您调用list(generator_function())时,generator_function被迭代到耗尽,每个元素都存储在一个列表中。所以,这三种操作都是一样的:

l = list(generator_function())
...
l = [x for x in generator_function()]
...
l = []
for x in generator_function():
    l.append(x)

在您的示例中,没有包含list(..),您只需将combinations生成器对象附加到y中。使用list(...),您将迭代combinations生成器来构建list对象,然后将其附加到y。在

相关问题 更多 >

    热门问题