Как удалить первый столбец из 2D списков?

#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]