Добавление списка через условие if в python - PullRequest
0 голосов
/ 22 октября 2018

Это может быть очень простой вопрос, но я понял, что я чего-то не понимаю.

При добавлении новых вещей в цикл for, как я могу поднимать условия и по-прежнему добавлять элемент?

Например:

alist = [0,1,2,3,4,5]
new = []
for n in alist:
    if n == 5:
        continue
    else:
        new.append(n+1)

print(new) 

Получает меня

[1, 2, 3, 4, 5]

Как мне получить

[1, 2, 3, 4, 5, 5] # 4 is incremented, 5 is added 'as is'

По сути, я хочу сказать Python не проходить n+1 когда n==5.

Это будет единственное решение?добавить == 5 отдельно в список, а затем суммировать новый и отдельный список?

Ответы [ 3 ]

0 голосов
/ 22 октября 2018

Вы можете использовать тот факт, что логическое значение True равно 1, а значение False равно 0 в сочетании с пониманием списка, например:

Код:

[x + int(i != 5) for i, x in enumerate(alist)]

Код теста:

alist = [0, 1, 2, 3, 4, 5]
new = [x + int(i != 5) for i, x in enumerate(alist)]
print(new)

Результат:

[1, 2, 3, 4, 5, 5]
0 голосов
/ 22 октября 2018

Похоже, вы не получили точку «продолжить».Ключевое слово Python 'continue' означает, что вы ничего не делаете в этом условии if, поэтому в основном вы говорите программе "ничего не делать", когда n == 5, а если n не равно 5, вы делаете какую-то операцию.Вот почему вы получили свой оригинальный результат.Надеюсь, это поможет.

0 голосов
/ 22 октября 2018

Почему бы вам просто не добавить 5 вместо использования continue, есть ли другие условия?

for n in alist:
    if n == 5:
        new.append(n)
    else:
        new.append(n+1)
...