在Python中比较和更改列表

时间:2016-01-05 10:35:26

标签: python string list replace

我想使用给定的模式在两个列表中更改相同的元素。列表的元素是'xxx.yyy...'之类的字符串。所以有效的元素是例如'aa', 'aa.1.2', '2.1.1'

示例:

list_1 = ['24' '1.1' '1.2' '2.13' '1.4']
list_2 = ['aa' 'bb' '1.1' '1.2' '1.3' '1.4' '1.5' '1.6' '24']

所以在这种情况下元素:

'1.1', '1.2', '1.4', '24' 

其中一个列表在两个列表中很常见,必须更改为:

'1.7', '1.8', '1.9', '25'

因此保留根,只更改最后一部分。 我可以找到相同的元素是否存在,如:

for elem in list_1:
    if elem in list_2:

但是如何相应地改变它们呢?

2 个答案:

答案 0 :(得分:0)

使用我的水晶球,我确定你想要这样的东西:

def get_new_name(item):
    *head, tail = item.split(".")
    tail=int(tail)
    head = ".".join(head)
    while True:
        tail += 1
        yield head +"." + str(tail) if head else str(tail) 
for idx, item in list1:
    if item in list2:
        for new in get_new_name(item):
            if new not in list2 and new not in list1:
                list1[idx] = new
                break

花式参数解包只能在最新版本的python(3)中使用,但很容易使用其他方法进行复制。

答案 1 :(得分:0)

也许你想要创建一个新的列表,并在那里附加不在两个列表中的元素,并追加两个列表中的元素。

This is a line of text to test Bold

但这是疯狂的猜测(代码是"不漂亮"),因为你的问题还不完全清楚。