#python #list #python-3.x
#python #Список #python-3.x
Вопрос:
Итак, у меня есть этот список списков. В каждом вложенном списке есть n 1
элемент, где первый элемент является плавающим, а последний — целым числом. Мне нужно получить для каждого вложенного списка все числа с плавающей запятой (таким образом, n элементов из n 1
). Какой наилучший способ добиться этого?
Например:
x = [[0.1, 0.2, 1], [0.4, 0.05, 16], [0.3, 0.3, 5]]
output = [[0.1, 0.2], [0.4, 0.05], [0.3, 0.3]]
Ответ №1:
Это самый короткий и простой способ:
output = [l[:-1] for l in x]
Это называется пониманием списка .
Ответ №2:
Если вы уверены int
, что всегда будет последним, нарезка — это вариант, при котором вы обрезаете последний элемент из каждого вложенного списка sub
в x
with sub[:-1]
( [:-1]
означает захват всех, кроме последнего элемента):
out = [sub[:-1] for sub in x] # or sub[:2] if sub is always 3 elements long
print(out)
[[0.1, 0.2], [0.4, 0.05], [0.3, 0.3]]
В качестве альтернативы, вы можете сделать это путем перебора элементов x
, перебора каждого подэлемента и оценки, является ли он экземпляром a float
, т.е.:
out = [[i for i in sub if isinstance(i, float)] for sub in x]
Это отфильтровывает любой элемент списка sub
, который является вложенным списком, x
который не является экземпляром float
типа. Это работает независимо от позиционирования, поэтому вы можете использовать его, если позиция int
не всегда последняя:
print(out)
[[0.1, 0.2], [0.4, 0.05], [0.3, 0.3]]
Наконец, для подхода на месте for
цикл и pop
редактирование являются жизнеспособным вариантом:
for s in x: _ = s.pop()
Теперь x
изменено на:
print(x)
[[0.1, 0.2], [0.4, 0.05], [0.3, 0.3]]
Комментарии:
1. Если кто-то считает, что этот ответ бесполезен, я был бы более чем готов отредактировать его и исправить. 🙂