Python中的二维列表操作
我正在尝试处理一个二维列表,想要把用户给定的数字加到每个子列表的第一个数字上,然后把子列表的第二个数字作为输出。接着,我还想用一个单独的函数来打印整个二维列表。目前为止,我只搞清楚了这些,但我不知道怎么正确地用循环来处理索引,所以还没有把显示函数加上,因为我无法得到正确的输出。非常感谢任何帮助!我使用的是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
这个循环没有尝试去更新列表,而且用了不必要的固定值(ROWS
和 COLS
)。最简单的修复方法是:
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))
。