【问题标题】:How to replace part of an array based on another part of the array?如何根据数组的另一部分替换数组的一部分?
【发布时间】:2019-07-29 09:09:33
【问题描述】:

我的问题是如何扫描“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']] 

【问题讨论】:

标签: python regex list


【解决方案1】:

使用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']]

【讨论】:

    【解决方案2】:

    试试这个:

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

    【讨论】:

    • 它会失败:my_list = [[200, 'C3'],[4000, 'C2']]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 2016-07-21
    • 1970-01-01
    • 2017-08-27
    • 2021-01-24
    • 1970-01-01
    相关资源
    最近更新 更多