проблема с индексом списка питонов - PullRequest
1 голос
/ 05 февраля 2012

У меня довольно простая проблема с питоном, вот код:

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 ]

4 голосов
/ 05 февраля 2012

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
2 голосов
/ 05 февраля 2012

Как говорили другие, x является элементом nums. Для полноты картины, если вы хотите перебрать список и получить доступ к индексу, взгляните на enumerate()

for i, x in enumerate(nums):
    print i, x #nums[i] == x
0 голосов
/ 26 декабря 2018

, если вы хотите перемещать элементы, используя их индекс, вы можете использовать

for x in range (len(nums)):

вместо

for x in nums:

потому что в вашем коде он путешествует по индексу i-го значения из списка. Предположим, что самое первое значение списка - 34, а список - размер 5, поэтому в соответствии с вашим кодом вы пытаетесь извлечь 34-е значение индекса из списка, поэтому вы получаете.

индекс списка вне диапазона

0 голосов
/ 05 февраля 2012

x уже является элементом nums. Заменить nums[x] на x.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...