a = "alpha"
b = None
c = "charlie"
first_list = [a,b,c]
a_define = "a"
b_define = "b"
c_define = "c"
second_list = [a_define, b_define, c_define]
third_list = []
len_of_firstlist = len(first_list)
for item in range(len_of_firstlist+1):
if first_list[item] is not None:
first_list[item] = first_list[item] + second_list[item]
third_list.append(first_list[item])
print third_list
不幸的是,这似乎有点普遍,但我只是迷失了...... 代码似乎有效,但它一直给我一个索引错误。
答案 0 :(得分:2)
您正在从0
到len(first_list)
建立索引,但first_list
中的最后一个索引是len(first_list) - 1
,因为索引从0开始。
从您的范围中移除+1
:
for item in range(len_of_firstlist):
您可以使用range()
生成索引和来访问该值,而不是使用enumerate()
;使用zip()
配对两个列表:
for index, (first, second) in enumerate(zip(first_list, second_list)):
if first is not None:
first_list[index] = first + second
third_list.append(first_list[index])
答案 1 :(得分:0)
我认为你不清楚其中的一些观点:
range(start=0,stop,step=1)
函数从默认值0开始,当值等于时停止以停止,即stop
值不包括在内。
有关详细信息,请参阅docs。因此,如果要遍历长度为n
的字符串,则需要将范围定义为range(n)
。
如果您想要更紧凑的代码,可能会进行一些更改:
a = "alpha"
b = None
c = "charlie"
first_list = [a,b,c]
a_define = "a"
b_define = "b"
c_define = "c"
second_list = [a_define, b_define, c_define]
third_list = []
for item in xrange(len(first_list)):
if first_list[item] is not None:
first_list[item] += second_list[item]
third_list.append(first_list[item])
print third_list