Python - 将嵌套内的列表赋值给变量
我刚接触Python,希望能得到一点帮助。
我想知道怎么做以下几件事:
我把文件中的每一行转换成了一个嵌套列表,比如说
[['line 1', 'a'], ['line 2','b']]
。现在我想把这个列表“扁平化”,也就是让每一行都能和一个变量关联起来。假设每个子列表的第一个元素,比如i[:][0]
,是我已经知道的。我能不能把多个列表关联到一个变量上?比如说
x = [list1], [list2]
这样做可以吗?我在一个列表上使用了for循环,怎么把这个列表的某些部分和一个变量关联起来呢?下面有个例子。
例子:
for i in list_1:
if i[:][0] == 'm':
i[2] = a
i[3] = b
i[4] = c
上面的代码返回了NameError,提示a、b、c没有定义。怎么才能在for循环或者一般的循环中定义变量呢?
希望我说得清楚,因为我有点困惑!
更新:
为了更清楚:
我有一个嵌套列表,每个子列表里都是字符串。这些字符串其实是数字。我想把这些字符串转换成整数,以便进行数学运算。
例子:
[['1', '2', '3'], ['4', '5', '6'], ['7', '8', '9']]
现在,要把每个字符串转换成整数,使用abs()合适吗?应该怎么实现呢?
另外,如何把每个子列表的第三个元素相加,并把总和赋值给一个变量?我需要为此定义一个函数吗?
任何处理这个问题的建议都非常感谢!
还有,之前的建议让我意识到,是我的思维方式造成了问题!谢谢!
5 个回答
如果我理解得没错,你有一个列表的列表,这些列表的长度可能是2或者1(当变量名不确定的时候)。
你可能想用一个字典来存储这些行。
另外要提到的是,i[:][0]
的意思和你想要的不同,它其实和i[0]
是一样的(i[:]
会是列表i
的一个副本)。
list_1 = [['line 1', 'a'], ['line 2','b'], ['line 3']]
d = {}
for i in list_1:
if len(i) != 2:
continue
key = i[1]
value = i[0]
d[key] = value
然后对于a
,你可以用d[a]
来获取。
如果你最终想把它们转换成变量,可以用locals().update(d)
来实现。
第二条:我看不出这怎么可能——难道一个变量只能赋一个值吗?
# Answer to question 1 - just use the built-in functionality of lists.
#
# There is no need to use variables when lists let you do so much more
# in a quick and organised fashion.
lines = []
for line in open_file:
lines.append(line)
因为Li0liQ已经回答了问题2和3,我想补充一下关于问题3的建议。其实你完全不需要通过i[:]来复制列表,因为你只是想测试列表中的一个值。