#python #list #list-comprehension
#python #Список #список-понимание
Вопрос:
Пытаюсь удалить строку из 2D списка, но только в первом столбце
Моя попытка:
list = [[x.strip('this') for x in y[0]] for y in list]
Пример списка:
[["apple this","juice this"],
["orange this","lemonade this"],
["kiwi this","punch this"]]
Требуемый результат:
[["apple","juice this"],
["orange","lemonade this"],
["kiwi","punch this"]]
Удаление только «этого» из первого столбца, но не второго.
Предпочтительно даже не проверять другие столбцы.
Комментарии:
1. Пожалуйста, предоставьте желаемый результат для
list
того, чтоlist
было до того, как вы упомянули об этом в коде, опубликованном выше.2. Что такое
y
иlist
?3. Сейчас приведен пример.
4. @Augis добавил ответ на это сейчас! приветствия
5. Каков текущий результат?
Ответ №1:
Используя split()
и zip()
:
ee = [["apple this","juice this"],
["orange this","lemonade this"],
["kiwi this","punch this"]]
splitted = [x[0].split()[0] for x in ee] # ['apple', 'orange', 'kiwi']
later_lst = [x[1] for x in ee] # ['juice this', 'lemonade this', 'punch this']
print([list(l) for l in zip(splitted, later_lst)])
ВЫВОД:
[['apple', 'juice this'], ['orange', 'lemonade this'], ['kiwi', 'punch this']]
однострочный:
print([list(l) for l in zip([x[0].split()[0] for x in ee], [x[1] for x in ee])])
Редактировать:
Сокращенная версия:
print([[x[0].split()[0], x[1]] for x in ee])
Комментарии:
1. Сокращенная версия — это в значительной степени именно то, что мне было нужно, хотя, к сожалению, это универсальное решение недоступно.
2. Некоторые могут сказать, что это универсальное решение, инструмент, который помогает вам создавать список, изменяя каждый элемент из другого списка… дело в том, что вам нужно было очень специфическое решение, которое не является самым распространенным из запросов, но его можно легко выполнить
Ответ №2:
Попробуйте это
list = [[(x if i else x.strip()) for i,x in enumerate(y)] for y in list]
Ответ №3:
вы можете использовать
list = [[x.strip('strip this') if j==0 else x for j,x in enumerate(y)] for y in list]
Комментарии:
1. Обратите внимание, что передача
'strip this'
вstr.strip
не будет искать точное соответствие, скорее, она примет параметр как набор символов, которые будут сопоставлены в любом порядке и длины, например,'kiwi this'
будет удален'i this'
(потому что все эти буквы и пробел включены в параметр) и вернет'kiw'
… читайте об этом в документах2. да, но это был не тот вопрос, который задал спрашивающий. он просто хотел удалить все, что он хочет, из 2d списка.
3. Скопировано из OP… «Требуемый результат …
["kiwi",...
»
Ответ №4:
Вы можете попробовать это. Эта строка кода удалит
[[i.replace(' this',''), j] for i, j in a]