请您考虑以下代码吗?
start_list = [5, 3, 1, 2, 4]
square_list = []
for i in start_list:
square_list.append(start_list[i]**2)
print square_list
此代码旨在迭代start_list并将每个数字平方追加到平方列表中。所以输出意味着:
[25, 9, 1, 4, 16]
相反,我得到:
Traceback (most recent call last):
File "python", line 4, in <module>
IndexError: list index out of range
答案 0 :(得分:2)
您正在使用start_list的值作为start_list中元素的位置。循环语句
for i in start_list
square_list.append(start_list[i]**2)
print square_list
给出start_list中的所有值,然后在start_list中搜索具有这些值作为索引的元素,这可以在使用语句start_list[i]
时看到。
相反,它应该是:
for num in start_list:
square_list.append(num**2)
print square_list
答案 1 :(得分:1)
您使用start_list
中的值作为 indices 。第一个这样的值是5
,但您没有start_list[5]
,而是IndexError
。 Python for
循环是一种Foreach loop,您将获得列表中的内容。
不要将值用作索引。只需直接使用值 ;您已将其分配到i
,因此方i
:
square_list.append(i**2)
答案 2 :(得分:0)
你也可以使用列表理解:
squarelist = [i**2 for i in start_list]
甚至这个:
squarelist = list(map(lambda x: x**2, start_list))
答案 3 :(得分:0)
您可以使用多个sol:
squarelist = [x**2 for x in start_list]
或者:
squarelist = map(lambda x : x**2 , start_list)
或者:
squarelist = []
for x in start_list :
squarelist.append(x**2)
或
square_list = []
for i in range(len(start_list)):
square_list.append(start_list[i]**2)
print square_list