#python #list
Вопрос:
Я пишу на python, и у меня есть список, состоящий из 8 подсписков, составленных таким образом: [[значение 1,значение 2,значение 3], …].
Я хочу изменить на «False» только третье значение (value3) во всех подсписках, используя расширение списка, но мой код не работает, и я не знаю, почему.
[[a, b, False] for a, b, _ in athlete_session_el['top_bottom_first']]
athlete_session_el['top_bottom_first']
это список подсписков.
Комментарии:
1. Во всех подсписках
2. Этот код работает для меня. В чем проблема?
3. Что? В моем коде все старые значения остаются в предыдущей конфигурации. Только что проверил
4. Вы назначили результат?
athlete_session_el['top_bottom_first'] = [...]
?
Ответ №1:
Следующие работы:
athlete_session_el = {}
athlete_session_el['top_bottom_first'] = [[1,2,3],[1,2,3],[1,2,3]]
print([[sublist[0], sublist[1], False] for sublist in athlete_session_el['top_bottom_first'] ])
[[1, 2, False], [1, 2, False], [1, 2, False]]
Комментарии:
1. Хорошо, да, это работает. Но только если в athlete_session_el[‘top_bottom_first’] у меня есть такие подсписки [(x,y,z)].. У меня есть эти [x,y,z], и «не удается распаковать неитерабельный объект NoneType» вызывает
2. печать([[подсписка[0], подсписка[1], Ложь] для подсписки в athlete_session_el[‘top_bottom_first’] ]) работает с [x,y,z]. Я отредактирую ответ соответствующим образом
Ответ №2:
Вы можете попробовать это
liste= [[1,2,3],[1,2,3],[1,2,3]]
comp = [False if indx ==2 else y for x in liste for indx, y in enumerate(x) ]