Python - 将嵌套内的列表赋值给变量

1 投票
5 回答
2860 浏览
提问于 2025-04-15 17:11

我刚接触Python,希望能得到一点帮助。

我想知道怎么做以下几件事:

  1. 我把文件中的每一行转换成了一个嵌套列表,比如说 [['line 1', 'a'], ['line 2','b']]。现在我想把这个列表“扁平化”,也就是让每一行都能和一个变量关联起来。假设每个子列表的第一个元素,比如 i[:][0],是我已经知道的。

  2. 我能不能把多个列表关联到一个变量上?比如说 x = [list1], [list2] 这样做可以吗?

  3. 我在一个列表上使用了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 个回答

0

如果我理解得没错,你有一个列表的列表,这些列表的长度可能是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)来实现。

1

第二条:我看不出这怎么可能——难道一个变量只能赋一个值吗?

2
# 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[:]来复制列表,因为你只是想测试列表中的一个值。

撰写回答