列表索引超出范围:有条件地将信息从两个列表导入一个
List Index Out of Range: Importing info from two lists into one conditionally
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
一直到 len(first_list)
,但 first_list
中的最后一个索引是 len(first_list) - 1
,因为索引从 0 开始。
从您的范围中删除 +1
:
for item in range(len_of_firstlist):
您可以使用 enumerate()
生成索引 和 来访问值,而不是使用 range()
;使用 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])
我觉得你对这几点还不清楚:
range(start=0,stop,step=1)
函数从默认值 0 开始,当值 等于 时停止,即 stop
值为 不包括在内。
有关详细信息,请参阅 docs.
- Python 中的列表从 0 开始索引(类似于 C 中的数组)。
所以如果你想遍历一个长度为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
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
一直到 len(first_list)
,但 first_list
中的最后一个索引是 len(first_list) - 1
,因为索引从 0 开始。
从您的范围中删除 +1
:
for item in range(len_of_firstlist):
您可以使用 enumerate()
生成索引 和 来访问值,而不是使用 range()
;使用 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])
我觉得你对这几点还不清楚:
range(start=0,stop,step=1)
函数从默认值 0 开始,当值 等于 时停止,即stop
值为 不包括在内。 有关详细信息,请参阅 docs.- Python 中的列表从 0 开始索引(类似于 C 中的数组)。
所以如果你想遍历一个长度为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