在某些样式的python中,一切都是生成器,例如使用yield
而不是构建和return
列表。如果您需要将其用作列表,则只需拨打list(gen)
。
如果我已经有一个列表,那么拨打list(my_list)
的费用是多少?
使用:我有一个变量,我知道它有一个迭代器,而可能是一个列表,但我需要将它用作列表。进行my_list = list(my_list)
或其他方式检查其列表是否更好/更pythonic?
如果重要的是我使用的是Python 3.5。
答案 0 :(得分:5)
如果您致电list(x)
,您肯定会创建一个新列表,即使x
已经是一个列表。如果您想避免它,可以使用isinstance(x, list)
检查x
是否为列表。
if not isinstance(x, list):
x = list(x)