Извлечение первого и последнего элемента из подсписок во вложенном списке - PullRequest
3 голосов
/ 09 июля 2020

Как извлечь первый и последний элементы из каждого подсписка во вложенном списке?

Например:

x=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
print(x)
#[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

Желаемый результат -

[[1, 3], [4, 6], [7, 9]]

Это самое близкое, что я видел -

a = [x[i][i] for i in (0, -1)]
print(a)
#[1, 9]

Ответы [ 6 ]

9 голосов
/ 09 июля 2020

Вы правильно поняли. Если ваш список внутри списка имеет только один уровень, вы можете получить доступ к первому и последнему элементам с пониманием списка и индексированием -1, как вы пытались сделать:

a = [[sublist[0],sublist[-1]] for sublist in x]

Вывод:

>>> a
[[1, 3], [4, 6], [7, 9]]
2 голосов
/ 09 июля 2020

Вот как можно использовать фрагменты списка:

x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
x = [l[::len(l)-1] for l in x]
print(x)

Вывод:

[[1, 3], [4, 6], [7, 9]]
1 голос
/ 09 июля 2020
x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]

>>> [a[:1] + a[-1:] for a in x]
[[1, 3], [4, 6], [7, 9]]

Я извлекаю 2 фрагмента, один с первым элементом, один с последним, и объединяю их. Он будет работать, даже если подсписки имеют разную длину.

0 голосов
/ 09 июля 2020

Вы можете l oop просматривать список и получать доступ к ним оттуда:

x=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

out = []
for arr in x:
    out.append([arr[0], arr[-1]])

print(out)

Вывод:

[[1, 3], [4, 6], [7, 9]]

Кроме того, вы можете использовать понимание списка:

out = [[arr[0], arr[-1]] for arr in x]
0 голосов
/ 09 июля 2020

Я бы порекомендовал сделать это вот так. Синтаксис list[-1] предназначен для получения последнего элемента в списке, который вам нужен.

x=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

for elem in x:
    print(elem[0], elem[-1])

Он просто печатает их в стандартном формате, но для того, чтобы вернуть их в новый список в этом порядке было бы просто.

0 голосов
/ 09 июля 2020

Это работает:


x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
for item in x:
    print(item[0], item[2])

Для получения точного желаемого результата используйте это:


x = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
new_list = []
for item in x:
    new_list.append([item[0], item[2]])

print(new_list)

...