在嵌套列表中添加项目?

时间:2017-04-04 21:49:59

标签: python list loops

我有这个代码用于在嵌套列表中添加项目:

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

它有效,但我不明白为什么。就像,为什么我在开始时= 0?不应该"我"是列表的元素?我认为当你运行for循环时会发生什么。与j相同。另外,我和j有什么关系?我几个小时都在查看这段代码并搜索视频,似乎无法找到解释。如果有人能为我解释这些代码的元素,那么老实说它会有很多帮助。谢谢。

3 个答案:

答案 0 :(得分:0)

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

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

for elem in list1:
    # work with elem

您可以这样做,具体取决于您在处理时是否需要知道每个元素的索引。

答案 1 :(得分:0)

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

i转换为range()的结果,其中列出了从第一个到最后一个但不包括最后一个的数字。

ij是这些列表的索引。它将此视为一个数组,这通常是Python新手试图应用其旧语言技能的保留,其中ij代表x和{{1}二维数组中的值。

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

y

甚至

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

答案 2 :(得分:-1)

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

语句for i in range(0, len(list1)):i设置为在外部for循环中从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