Создание функции python, которая изменяет списки с помощью кортежей - PullRequest
0 голосов
/ 18 марта 2020

Привет, ребята. У меня возникла текущая проблема:

list_a = [('abc d',1), ('abc d',2) ,('acb e',3) ,('b',1),('b',2),('b',3)]

из list_a, я пытаюсь создать функцию, которая будет возвращать следующий вывод ...

По сути, я хочу сохранить все [0] значения, которые начинаются со строки 'a', и внести изменения в соответствующие [1] значения.

Модификация представляет собой простое [1] x 2 ...

('abc d',1) --> ('abc d',2)
('abc d',2) --> ('abc d',4)
('act d',3) --> ('abc d',6)

Сохранение остальных пар такими, какими они были, поскольку они начинаются с буквы 'b' в позиции [0].

Желаемый вывод:

[('abc d',2), ('abc d',4) ,('acb e',6) ,('b',1),('b',2),('b',3)]

Заранее спасибо :)

Ответы [ 2 ]

2 голосов
/ 18 марта 2020

Просто используйте понимание списка

list_b = [(i[0],i[1] * 2) if i[0].startswith("a") else i for i in list_a ]
0 голосов
/ 18 марта 2020

Вы можете сделать это следующим образом.

list_a = [('abc d',1), ('abc d',2) ,('acb e',3) ,('b',1),('b',2),('b',3)]

def foo(list_a):
    output=[]
    for x,y in list_a:
        if x[0] =="a":
            output.append((x,2*y))
        else:
            output.append((x,y))
    return output
...