我有这个代码用于在嵌套列表中添加项目:
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有什么关系?我几个小时都在查看这段代码并搜索视频,似乎无法找到解释。如果有人能为我解释这些代码的元素,那么老实说它会有很多帮助。谢谢。
答案 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()
的结果,其中列出了从第一个到最后一个但不包括最后一个的数字。
i
和j
是这些列表的索引。它将此视为一个数组,这通常是Python新手试图应用其旧语言技能的保留,其中i
和j
代表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]
)在外循环的第二次迭代。 i
和j
的组合用于索引嵌套列表中存储的实际数字。
根据您的问题,您似乎期望i
和j
的值引用列表的实际元素。你可以这样做,但语法会略有不同,如下所示:
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