Как заменить часть массива на основе другой части массива? - PullRequest
1 голос
/ 07 марта 2019

мой вопрос: как мне отсканировать «my_list» на «comp» и изменить соответствующее значение времени с 200 на «t», только если 200 меньше t?

t = 3000
comp = 'C1'
my_list = [[200, 'C1'],[4000, 'C2']] 

Вывод:

my_list = [[3000, 'C1'],[4000, 'C2']] 

С этим сценарием можно сделать обратное, поскольку список не должен изменяться, так как «t» меньше, чем «5000»:

t = 3000
comp = 'C1'
my_list = [[5000, 'C1'],[4000, 'C2']] 

Ответы [ 2 ]

1 голос
/ 07 марта 2019

Попробуйте это:

my_list = [[t,k[1]] if( k[1]==comp and k[0]<t ) else k for k in my_list]
0 голосов
/ 07 марта 2019

Использование deepcopy:

t = 3000
comp = 'C1'
my_list = [[200, 'C1'],[4000, 'C2']]

for e in my_list[:]:
    if comp in e:
        if e[0] < t:
            e[0] = t

print(my_list)

В конце концов, одна строка :

print([[t,e[1]] if e[1] == comp and e[0]<t else e for e in my_list])

ВЫХОД :

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