我有一个相当基本的python问题,这是代码:
def LCM(nums):
i = max(nums)
var = 0
x = 0
while i>0:
for x in nums:
var = var+int(nums[x])%i
if (var == 0):
return i
i=i-1
nums
是一个列表,我认为x
是该列表的索引,for
语句应该遍历列表中的每个值nums[x]
。似乎x
应该从nums
的第一个元素开始,并遍历每个值,直到nums用完值。
相反,我得到list index out of range
,我不明白这是怎么回事。
我的for
语法搞砸了吗?我无法理解这一点。
答案 0 :(得分:4)
x
不是索引。 x
是list
中的元素。
此外,您不需要围绕if
条件的括号。
>>> nums = [11, 12, 13, 14, 15, 16]
>>> for x in nums:
... if x % 3 == 0:
... print x, 'is divisible by three'
... else:
... print x
...
11
12 is divisible by three
13
14
15 is divisible by three
16
答案 1 :(得分:2)
正如其他人所说,x
是nums
的元素。为了完整起见,如果要迭代列表并有权访问索引,请查看enumerate()
for i, x in enumerate(nums):
print i, x #nums[i] == x
答案 2 :(得分:0)
x
已经是nums
的元素。将nums[x]
替换为x
。
答案 3 :(得分:0)
如果要使用索引来移动元素,则可以使用
for x in range (len(nums)):
代替
for x in nums:
因为在您的代码中,它正在通过列表中第i个值的索引进行传播。 就像假设list的第一个值是34,list的大小为5,所以根据您的代码,您试图从列表中移动第34个索引值,这就是为什么要获取它。
列表索引超出范围