这似乎是Python的捷径。我想将项目附加到列表N次,有效地做到这一点:
l = []
x = 0
for i in range(100):
l.append(x)
在我看来,应该为此采用一种“优化”的方法,例如:
l.append_multiple(x, 100)
在那儿?
这似乎是Python的捷径。我想将项目附加到列表N次,有效地做到这一点:
l = []
x = 0
for i in range(100):
l.append(x)
在我看来,应该为此采用一种“优化”的方法,例如:
l.append_multiple(x, 100)
在那儿?
Answers:
对于不可变数据类型:
l = [0] * 100
# [0, 0, 0, 0, 0, ...]
l = ['foo'] * 100
# ['foo', 'foo', 'foo', 'foo', ...]
对于通过引用存储的值,您不妨稍后进行修改(例如子列表或字典):
l = [{} for x in range(100)]
(之所以第一种方法只适合于常量值(例如ints或字符串),是因为使用<list>*<number>
语法时仅进行浅表复制,因此,如果执行类似的操作[{}]*100
,最终将获得100个引用到同一个字典中-因此更改其中之一将全部更改。由于int和字符串是不可变的,因此这对他们来说不是问题。)
如果要添加到现有列表,则可以使用该extend()
列表的方法(结合通过上述技术生成要添加的事物列表):
a = [1,2,3]
b = [4,5,6]
a.extend(b)
# a is now [1,2,3,4,5,6]
a.extend(b*n)
所在的形式n
l = []
x = 0
l.extend([x]*100)
l.extend([x] * 100)
,因为它适合我的情况最好。琥珀色因其最全面而广受好评。谢谢!