在python中重复一个变量

在python中重复一个变量,python,Python,让var作为我的变量。 我想创建如下列表: new_list=[var,var,var,var,var,var,var,var] 如何操作(显然不是手动操作)?您可以使用乘法运算符进行操作: new_list = [var] * 8 还要记住,变量在Python中存储对对象的引用,因此: ob = MyObject() new_list = [ob] * 8 将创建一个列表,其中包含对同一对象的8个引用。如果您更改它-它们都会更改。您可以使用乘法运算符执行此操作: new_list = [

让var作为我的变量。 我想创建如下列表:

new_list=[var,var,var,var,var,var,var,var]

如何操作(显然不是手动操作)?

您可以使用乘法运算符进行操作:

new_list = [var] * 8
还要记住,变量在Python中存储对对象的引用,因此:

ob = MyObject()
new_list = [ob] * 8

将创建一个列表,其中包含对同一对象的8个引用。如果您更改它-它们都会更改。

您可以使用乘法运算符执行此操作:

new_list = [var] * 8
还要记住,变量在Python中存储对对象的引用,因此:

ob = MyObject()
new_list = [ob] * 8

将创建一个列表,其中包含对同一对象的8个引用。如果您更改了它,则它们都会更改。

您可以使用列表理解语法:

 new_list=[var for i in range(8)]

您可以使用列表理解语法:

 new_list=[var for i in range(8)]

您还可以使用itertools.repeat执行以下操作:

>>> from itertools import repeat
>>> repeatvars = repeat('var', 8)
>>> repeatvars
repeat('var', 8)
>>> list(repeatvars)
['var', 'var', 'var', 'var', 'var', 'var', 'var', 'var']
itertools模块下有许多有用的函数,您可以从中学习
,希望能有所帮助。

您也可以使用itertools。重复此操作:

>>> from itertools import repeat
>>> repeatvars = repeat('var', 8)
>>> repeatvars
repeat('var', 8)
>>> list(repeatvars)
['var', 'var', 'var', 'var', 'var', 'var', 'var', 'var']
itertools模块下有许多有用的函数,您可以从中学习

,希望这会有所帮助。

new_list=[var for i in range(8)]
让我们只希望
var
不是一个可变对象,或者OP会遇到一个可怕的惊喜。@TimPietzcker在推送答案后想到了这一点,已经发布了额外的解释;)@RostyslavDzinko,这不是一个英语句子。这是一个答案,它将创建一个列表,其中包含
8
或任何
n
实例的
var
is。@abarnert我的评论是指一个不必要的评论,他后来删除了该评论。斜体的“否”是一个剧本,他写了“这不是对所问问题的答案……”,而事实上这是对所问问题的答案,我没有将其作为答案发布,因为我觉得这更像是对他的答案的补充,而不值得单独发布,因为它们都是有效的,因此我最初使用了“或”这个词在我的第一个评论中。相反,他觉得需要小心谨慎,因此根据互联网的规则,我攻击了他对英语的掌握。或者
new_list=[var for I in range(8)]
让我们只希望
var
不是一个可变的对象,或者OP是一个令人讨厌的惊喜。@TimPietzcker,在按下回答后想到了这一点,已发布其他解释;)@RostyslavDzinko,这不是一个英语句子。这是一个答案,它将创建一个列表,其中包含
8
或任何
n
实例的
var
is。@abarnert我的评论是指一个不必要的评论,他后来删除了该评论。斜体的“否”是一个剧本,他写了“这不是对所问问题的答案……”,而事实上这是对所问问题的答案,我没有将其作为答案发布,因为我觉得这更像是对他的答案的补充,而不值得单独发布,因为它们都是有效的,因此我最初使用了“或”这个词在我的第一个评论中。相反,他觉得需要小心谨慎,因此根据互联网的规则,我攻击了他对英语的掌握?是可变的还是不可变的对象?@TimPietzcker确实。。。我在想一个简单的方法来问。。。我想到的最好的办法是:“你想让同一个物体重复八次,还是复制八次”。。。所以呃…@TimPietzcker它可以是一个整数,一个字符串,等等。。。任何对象。它可以是列表吗?口述?这些可能会给你带来麻烦。(因此Tim/Jon询问可变性)@user2913243整数或字符串是可以的(它们是不可变的),但是列表、dict、用户定义的对象可能会导致您以后出现问题,如果您更改它们,并且希望它们不会全部更改。
var
?是可变的还是不可变的对象?@TimPietzcker确实。。。我在想一个简单的方法来问。。。我想到的最好的办法是:“你想让同一个物体重复八次,还是复制八次”。。。所以呃…@TimPietzcker它可以是一个整数,一个字符串,等等。。。任何对象。它可以是列表吗?口述?这些可能会给你带来麻烦。(因此Tim/Jon询问可变性)@user2913243整数或字符串是可以的(它们是不可变的),但是列表、dict、用户定义的对象可能会导致您以后出现问题,如果您更改它们,并且希望它们不会全部更改。您为什么要这样做而不是使用其他解决方案?我想不出任何原因,但也许我忽略了一些东西(如果您使用copy.copy或其他东西,我可以看出这一点)约定是
而不是
I
,如果它未使用,但除此之外,我更喜欢这种方式如果
var
是一个每次都计算为新副本的表达式(如
[]
垃圾邮件。制作鸡蛋()
甚至,正如Joran建议的那样,
copy(var)
var[:]
),这将是正确的解决方案(假设您需要8个新副本,而不是8次相同的对象)。否则,这只是一种误导——它似乎在避免
*8
陷阱,但事实并非如此。为什么要这样做而不是其他解决方案?我想不出任何原因,但也许我忽略了一些东西(如果您使用copy.copy或其他东西,我可以看出这一点)约定是
而不是
I
,如果它未使用,但除此之外,我更喜欢这种方式如果
var
是一个每次都计算为新副本的表达式(如
[]
垃圾邮件。制作鸡蛋()
甚至,正如Joran建议的那样,
copy(var)
var[:]
),这将是正确的解决方案(假设您需要8个新副本,而不是8次相同的对象)。否则,这只是一种误导——它似乎在避免
*8
陷阱,但事实并非如此。