Объединение двух упорядоченных списков в список списков - PullRequest
0 голосов
/ 07 ноября 2018

Я пытаюсь написать функцию, которая добавляет порядковые номера к каждому элементу в списке

example function(['a', 'b', 7]) output---> [(1, 'a'), (2, 'b'), (3, 7)]

В настоящее время у меня есть

def example(el2):
    el1=list(range(len(el2)))
    new=list(map((lambda LL: [el1,LL]),el2))
    return new

но это дает мне

[[[0, 1, 2], 'a'], [[0, 1, 2], 'b'], [[0, 1, 2], 7]] 

не желаемый вывод

Ответы [ 3 ]

0 голосов
/ 07 ноября 2018

Вы можете использовать list comprehension:

input_list = ['a', 'b', 7]
output_list = [(i,e) for i, e in enumerate(input_list, start=1)]

или с помощью функции:

def example(input_list):
    return [(i,e) for i,e in enumerate(input_list, start=1)]

output_list = example(input_list)
0 голосов
/ 07 ноября 2018

Просто используйте list с enumerate и укажите start аргумент 1:

L = ['a', 'b', 7]

res = list(enumerate(L, 1))

[(1, 'a'), (2, 'b'), (3, 7)]
0 голосов
/ 07 ноября 2018

Есть много способов сделать это, простой способ - перебрать список ввода со счетчиком. По сути, результатом является (item-count, item), так что это хороший путь вперед.

input_list = ['a', 'b', 7 ]

def example(el2):
    output = []
    for i in range(len(el2)):
        output.append((i+1, el2[i]))
    return output

print(str(example(input_list)))

Я не большой поклонник лямбда-функций (на любом языке программирования), поскольку (IMMHO) они делают для менее читаемого кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...