Сопоставить данные списка с последним значением - PullRequest
1 голос
/ 24 февраля 2020

Как связать значение списка с последним значением того же списка, не включая его последнее значение ??

[1,2,3,4,5,10]

[6,7,8,9,10,11]

[12,13,14,15,16,17]

ожидаемый результат:

[1,10], [2,10], [3,10], [4,10], [5,10]
[6,11], [7,11], [8,11], [9,11], [10,11]
[12,17], [13,17], [14,17], [15,17], [16,17]

Ответы [ 4 ]

2 голосов
/ 24 февраля 2020

Это один подход, использующий list slicing.

Пример:

lst = [[1,2,3,4,5,10], [6,7,8,9,10,11], [12,13,14,15,16,17]]
for i in lst:
    print([[j, i[-1]] for j in i[:-1]])

Выход:

[[1, 10], [2, 10], [3, 10], [4, 10], [5, 10]]
[[6, 11], [7, 11], [8, 11], [9, 11], [10, 11]]
[[12, 17], [13, 17], [14, 17], [15, 17], [16, 17]]

Или с использованием itertools.product

from itertools import product

lst = [[1,2,3,4,5,10], [6,7,8,9,10,11], [12,13,14,15,16,17]]
for i in lst:
    print(list(product(i[:-1], [i[-1]])))
1 голос
/ 24 февраля 2020

использование zip

>>>
>>> a = [1,2,3,4,5,10]
>>> x = [a[-1]]*len(a) #get last item, add to list, multiply by len of 'a' list.
>>> z = zip(a,x)
>>>output = []
>>> for x,y in zip(a,x):
...    output.append([x,y])
...
>>> output
[[1, 10], [2, 10], [3, 10], [4, 10], [5, 10], [10, 10]]
1 голос
/ 24 февраля 2020

вы можете использовать список понимания:

l = [1,2,3,4,5,10]
[[i, l[-1]] for i in l[:-1]]

или вы можете использовать itertools.cycle

from itertools import cycle

[[i, j] for i, j in zip(l, cycle(l[-1:]))]

выход:

[[1, 10], [2, 10], [3, 10], [4, 10], [5, 10], [10, 10]]
1 голос
/ 24 февраля 2020

Вы можете сделать:

x = [1,2,3,4,5,10]
x_new = [[i,x[-1]] for i in x[:-1]]
print(x_new)

Вывод:

[[1, 10], [2, 10], [3, 10], [4, 10], [5, 10]]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...