Python - 在for循环中为n个变量赋值

时间:2013-06-12 20:27:03

标签: python list variables input

我们假设我想收集n个列表作为输入。 我以前做的是:

l=[]
for i in range(n):
    row=map(int,raw_input().split())
    l.append(row)

然后我以l [0],l [1],...,l [n]来访问这些列表。

还有更优雅的方法吗?我的意思是在for循环中动态创建变量,名称如:row1,row2,...,rown?

3 个答案:

答案 0 :(得分:2)

无论何时你问自己如何创建动态变量,答案是“使用字典”。

l=dict()
for i in range(n):
    k='row%d'%(i,)
    l[k] = map(int, raw_input().split())

答案 1 :(得分:1)

一开始看起来似乎是一个好主意,但是一旦你尝试了它,你可能会发现污染你的命名空间是不优雅的

创建列表的常用方法是嵌套列表解析

rows = [[int(j) for j in i] for i in raw_input().split()]

如果你更清楚,你可以把map扔进那里

rows = [map(int, i) for i in raw_input().split()]

然后你有rows[0]rows[1] ...等与row0 row1没有什么不同......并且更明显可以接受名称空间

答案 2 :(得分:0)

在我看来,这绝对是存储任意数量整数的最佳方式。你真的不想动态创建变量,主要是因为你以后如何使用它们。例如,如果您想使用数字23,您可以轻松地l[22]获取您的号码,并处理输入< 23号码的情况:

try:
    print l[22]
except IndexError:
    print "No element 22!"

使用不同的变量名来调用可能未声明的变量会更加困难。

此外,通过这种方式,您可以使用len(l)来查找您拥有的数字,而使用变量时,您必须使用locals()做一些混乱的事情,这不是一个好主意。< / p>