@WillyWonka7

Почему условие 'if' не срабатывает?

В самообразовательных целях пытался по винтикам раскрутить функцию zip и наткнулся на непонимание.
Не срабатывает условие if...
if i < len(seq):
Ошибка: IndexError: list index out of range

При этом если изменить знак сравнения и сделать инверсию истины и лжи, все работает...
if not i < len(seq):
И вот с этого момента я перестал что либо понимать...
Help me гуру кодинга!!!
def myzip(*args):
    minlen = max([len(i) for i in args])
    new = []

    for i in range(minlen):
        temp = []

        for seq in args:
            print('ind', i, 'seq', len(seq), i > len(seq))
            if i < len(seq):
                temp.append('new')
            else:
                temp.append(seq[i])
        new.append(temp)
    return print(new)


a = [i for i in range(3)]
b = list('1234')
myzip(a,b)


Решение проблемы

Со знаком все норм)
Перепутан был выход по условию, внимательность наше все)
Рабочий вариант:
for seq in args:
            if i < len(seq):
                temp.append(seq[i])
            else:
                temp.append('new')
  • Вопрос задан
  • 110 просмотров
Решения вопроса 1
@Avodil
У тебя само условие выглядит как-то странно. Если i < длины элемента, добавляем 'new', если больше или равно, вытаскиваем из элемента. А оттуда ты ничего не сможешь вытащить как раз потому, что i больше или равно длине элемента. и падает он не на ифе, а тут - temp.append(seq[i])
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы