Python 生成一个包含伪元素的给定长度的列表。德扬戈

Python 生成一个包含伪元素的给定长度的列表。德扬戈,python,django,Python,Django,我正在用django开发我的应用程序,在我的一个视图中,我有一个给定的编号(nbr)。我想知道是否有可能生成一个长度为“nbr”的列表,其中填充“nbr”伪元素 谢谢你是说这样的事吗 [fake_element for n in xrange(nbr)] 你是说像这样的 [fake_element for n in xrange(nbr)] 你的意思是: new_list = [None]*nbr 这个习惯用法主要用于不可变对象。对于可变对象,通常 new_list = [ mutable

我正在用django开发我的应用程序,在我的一个视图中,我有一个给定的编号(nbr)。我想知道是否有可能生成一个长度为“nbr”的列表,其中填充“nbr”伪元素


谢谢

你是说这样的事吗

[fake_element for n in xrange(nbr)]

你是说像这样的

[fake_element for n in xrange(nbr)]

你的意思是:

new_list = [None]*nbr
这个习惯用法主要用于不可变对象。对于可变对象,通常

new_list = [ mutable_object_factory() for _ in range(nbr) ]

使用(除非你真的知道自己在做什么:)

你的意思是:

new_list = [None]*nbr
这个习惯用法主要用于不可变对象。对于可变对象,通常

new_list = [ mutable_object_factory() for _ in range(nbr) ]

使用(除非您真的知道自己在做什么:)

假设随机元素存储在名为
choices
的列表中,您可以使用
random.choice

In [1]: choices = ['a', 'b', 'c']

In [2]: myList = [random.choice(choices) for x in xrange(10)]

In [3]: myList
Out[3]: ['b', 'b', 'c', 'b', 'c', 'a', 'a', 'a', 'b', 'a']

假设随机元素存储在名为
choices
的列表中,则可以使用
random.choice

In [1]: choices = ['a', 'b', 'c']

In [2]: myList = [random.choice(choices) for x in xrange(10)]

In [3]: myList
Out[3]: ['b', 'b', 'c', 'b', 'c', 'a', 'a', 'a', 'b', 'a']

如果一个语法总是有效的,为什么还要麻烦使用两个不同的语法呢@tvdien——他们做的事情略有不同。第一个更简洁。最后,由于这两种习语都很常见,所以最好同时知道这两种习语(例如,在阅读其他人的代码时)@tvdien——这两种习语之间有一个重要的区别,因为如果您使用new_list=obj*nbr,则会创建指向obj的nbr编号引用。这几乎肯定不是更改新列表[0]所需要的。某些内容将更改obj的所有引用副本中的“某物”属性。可能值得注意的是,在交互模式下使用
\uu
的副作用,
\u
将不再存储上一次操作的结果command@rorycl这正是我评论的原因。我想几乎没有人想要同一个可变对象的引用列表。因此,始终使用列表理解更安全,因为它更有可能给出所需的结果。如果一个语法始终有效,为什么还要麻烦使用两个不同的语法呢?:)@tvdien——他们做的事情略有不同。第一个更简洁。最后,由于这两种习语都很常见,所以最好同时知道这两种习语(例如,在阅读其他人的代码时)@tvdien——这两种习语之间有一个重要的区别,因为如果您使用new_list=obj*nbr,则会创建指向obj的nbr编号引用。这几乎肯定不是更改新列表[0]所需要的。某些内容将更改obj的所有引用副本中的“某物”属性。可能值得注意的是,在交互模式下使用
\uu
的副作用,
\u
将不再存储上一次操作的结果command@rorycl这正是我评论的原因。我想几乎没有人想要同一个可变对象的引用列表。因此,总是使用列表理解更安全,因为它更有可能给出期望的结果。我刚刚意识到我把问题的“假”元素误读为随机元素。我刚刚意识到我把问题的“假”元素误读为随机元素。