在嵌套列表中添加项?

2024-10-03 09:11:13 发布

您现在位置:Python中文网/ 问答频道 /正文

我有以下代码用于在嵌套列表中添加项:

list1 = [[1, 2, 3],[4, 5, 6]]
total = 0
for i in range(0, len(list1)):
    print 'len(list1)', len(list1)
    print 'i=', i
    for j in range(0, len(list1[i])):
        print 'j=', j
        print 'list1i', list1[i]
        total += list1[i][j]
        print 'sub-total=', total

print 'Final Total:', total

实施后,将运行:

len(list1) 2
i= 0
j- 0
list1i [1, 2, 3]
sub-total= 1
j- 1
list1i [1, 2, 3]
sub-total= 3
j- 2
list1i [1, 2, 3]
sub-total= 6
len(list1) 2
i= 1
j- 0
list1i [4, 5, 6]
sub-total= 10
j- 1
list1i [4, 5, 6]
sub-total= 15
j- 2
list1i [4, 5, 6]
sub-total= 21
Final Total: 21

行得通,但我不明白为什么。比如,为什么一开始i=0?“我”不应该是列表中的元素吗?我以为这就是你运行for循环的结果。和j一样。还有,我和j是什么关系?我已经看了几个小时的代码和视频搜索,似乎找不到一个解释。如果有人能为我解释一下这段代码的内容,那真的会很有帮助。非常感谢。你知道吗


Tags: 代码in元素列表forlen关系range
3条回答

i是主列表中的索引;j是每个子列表中的索引。索引和元素本身的区别是

for i in range(0, len(list1)):
    # work with list1[i]

for elem in list1:
    # work with elem

这两种方法都可以,这取决于处理每个元素时是否需要知道其索引。你知道吗

for i in range(0, len(list1)):

i转换为^{}的结果,该结果给出从第一个到最后一个的数字列表,但不包括最后一个。你知道吗

ij是这些列表的索引。它将此视为一个数组,通常是Python新手试图应用其旧语言技能时留下的,其中ij表示二维数组中的xy值。你知道吗

相反,python中更好的方法是:

total = 0
for sublist in list1:
    total += sum(sublist)

甚至

total = sum(map(sum, list1))

为什么一开始i=0?“我”不应该是列表中的元素吗?

语句for i in range(0, len(list1)):将外部for循环中的i设置为从0递增到(1-列表长度)。i的值用作list1元素的索引。你知道吗

注意,list1的长度是2,即它有两个元素,它们本身就是列表。第一个元素是[1,2,3],第二个元素是[4,5,6]。你知道吗

上述解释同样适用于j。在您提交的代码中,j在外循环的第一次迭代中从0递增到1-(长度list1[0]),在外循环的第二次迭代中从0递增到1-(长度list1[1])。ij的组合用于索引嵌套列表中存储的实际数字。你知道吗

从您的问题来看,您似乎希望ij的值引用列表的实际元素。您可以这样做,但语法会略有不同,如下所示:

list1 = [[1, 2, 3],[4, 5, 6]]
total = 0
for i in list1:
    print 'i=', i
    for j in i:
        print 'j=', j
        total += j
        print 'sub-total=', total

print 'Final Total:', total

相关问题 更多 >