如何将列表范围存储为变量?

时间:2014-04-01 15:28:24

标签: python list

我正在尝试将列表的范围存储为变量,但我一直无法在线研究这个问题,并且对如何执行此操作感到困惑。让我们说我有一个清单。

Score = [0,0,0,0]
players = #code that takes amount of different scores in the list SCORE into the variable players

如何将数量存储到另一个变量中。或者使用变量创建包含该数量的列表。

print 'how many players are there'
input = () #user inputs amount of players
#code that creates list with that amount of variables

3 个答案:

答案 0 :(得分:2)

“将数量存储到另一个变量中”:使用内置len函数:

num_vars = len(Score)

要创建给定长度的列表,您至少有两个选项:

my_list = [0] * required_length

它给出了所需长度的列表,但是在每个索引中存储了相同的对象,这可能导致可变对象的意外行为( im 可变对象是例如元组,整数和字符串) ,或者其他方式

my_list = [0 for x in range(required_length)]

使用强大的list comprehensions并在每个索引中创建一个单独的对象(对于可变对象)。 感谢您的评论。

答案 1 :(得分:0)

你可以这样说

print 'how many players are there'
num = int(input()) 
newList = [0]*num

输入5

的结果
>>> newList
[0, 0, 0, 0, 0]

答案 2 :(得分:0)

这里有几个很好的答案可以让你初始化一个任意长度的零列表。但是考虑一下,Pythonic方法通常不会在需要之前初始化某些东西。允许这样做的一个工具是collections.defaultdict

from collections import defaultdict
Scores = defaultdict(int)

Scores这里根本不是一个列表,但 有索引值。

>>> Scores[1] += 1
>>> Scores[1]
1

由于任何得分的初始值为0,我们不需要明确设置它,但零点是按需构建的 ,因此它们不会在我们需要它们之前,请占用内存空间。此外,我们有能力查找任意玩家的得分,无论该玩家是按编号索引还是其他可播放的,例如字符串。

>>> Scores['david']
0

嗯,这是预期的,我们还没有初始化大卫。但是,我们没有收到错误,现在我们有了人类可读的播放器名称。但如果您愿意,仍然可以使用整数作为索引。