Получить диапазон значений из списка - PullRequest
1 голос
/ 01 марта 2020

Мне интересно, есть ли у меня список списка, подобный этому:

a = [[43,76],[8,3],[22,80],[71,9]]

Если я хочу получить второе значение в последних 3 подсписках, то есть второе значение из индекса 1 до 3 будет так:

a[1:3][1]:

3
80
9

Ответы [ 4 ]

3 голосов
/ 01 марта 2020

My 2 c:

[x[1] for x in a[-3:]]

[3, 80, 9]

Демо

1 голос
/ 01 марта 2020

Вы можете использовать отрицательная нарезка здесь.

print(*[x[1] for x in a[-3:]],sep='\n') #a[-3:] gives last 3 elements
0 голосов
/ 01 марта 2020

Возможно, самый простой способ сделать это, как предлагали большинство других ответов:

[x[1] for x in a[-3:]]

Однако для практики и для того, чтобы привыкнуть к другим способам решения проблем, связанных со списками (и другими), хорошо прочитать о том, что map, filter и reduce делают (при условии, что это еще не известно). Небольшое описание здесь .

Я думал, что оставлю этот ответ здесь, чтобы добавить к другим ответам. Это еще один способ сделать это, используя map.

[*map(lambda x: x[1], a[-3:])]

Output: [3, 80, 9]

Надеюсь, это поможет.

0 голосов
/ 01 марта 2020

Нет, это оценивается следующим образом:

a[1:3][1] -> [[8, 3], [22, 80]][1] -> [22, 80]

Обратите внимание, что :3 означает до индекс 3 (не включая его), так что на самом деле ваш срез должен быть a[1:4], но там, где вы хотите последние три подсписка, а не второй-четвертый подсписки, вы должны использовать отрицательный срез: a[-3:]. Даже если список может быть только 4-длинным, это будет понятнее.

Итак, вы хотите [x[1] for x in a[-3:]]

Если вы хотите напечатать их, как показано в примере:

>>> for x in a[-3:]:
...     print(x[1])
... 
3
80
9
...