python列表索引问题

时间:2012-02-04 21:14:54

标签: python list for-loop

我有一个相当基本的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语法搞砸了吗?我无法理解这一点。

4 个答案:

答案 0 :(得分:4)

x不是索引。 xlist中的元素。

此外,您不需要围绕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)

正如其他人所说,xnums的元素。为了完整起见,如果要迭代列表并有权访问索引,请查看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个索引值,这就是为什么要获取它。

  

列表索引超出范围