Python中的二维列表操作

0 投票
1 回答
1083 浏览
提问于 2025-04-18 04:30

我正在尝试处理一个二维列表,想要把用户给定的数字加到每个子列表的第一个数字上,然后把子列表的第二个数字作为输出。接着,我还想用一个单独的函数来打印整个二维列表。目前为止,我只搞清楚了这些,但我不知道怎么正确地用循环来处理索引,所以还没有把显示函数加上,因为我无法得到正确的输出。非常感谢任何帮助!我使用的是Python 3.3。

ROWS = 5
COLS = 2

def main():

    num1 = int(input('Type a whole number and press ENTER: '))

    values = [[10, 0],
              [13, 0],
              [36, 0],
              [74, 0],
              [22, 0]]

    for r in range(ROWS):
        add = values[0] + num1
        for c in range(COLS):
            c = add

    print(c)
    input('press enter to continue')

main()

1 个回答

1

你现在的循环有几个问题:

for r in range(ROWS): # r is assigned to values 0 to 4 in turn (but never used)
    add = values[0] + num1 # TypeError - can't add integer to (sub-)list
    for c in range(COLS): # c is assigned to values 0 to 1 in turn
        c = add # c is reassigned to add's value

这个循环没有尝试去更新列表,而且用了不必要的固定值(ROWSCOLS)。最简单的修复方法是:

for r in range(ROWS):
    add = values[r][0] + num1 # note [r]
    for c in range(COLS):
        values[r][c] = add

不过,更整洁的写法是:

for row in values:
    add = row[0] + num1
    for index in range(len(row)):
        row[index] = add

这样做会把所有的值更新为第一个值加上用户输入的整数。如果想保持第一个整数不变,可以用 range(1, COLS)range(1, len(row))

撰写回答