我们假设我想收集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?
答案 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>