创建平方列表时的IndexError

时间:2016-07-10 09:09:23

标签: python append

请您考虑以下代码吗?

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

4 个答案:

答案 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