python基于另一个列表重命名列表元素

2024-04-18 07:25:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个清单如下

A=['a','b','c']

B=['0_txt1','0_txt2','1_txt1','1_txt2','2_txt1','2_txt2']

我应该使用A中相应的列表元素重命名B元素中的前缀编号,因此所需的输出为:

B=['a_txt1','a_txt2','b_txt1','b_txt2','c_txt1','c_txt2']

如何通过读取和替换元素来实现这一点?谢谢大家!


Tags: 元素列表编号重命名txt1txt2
3条回答

下面是一个简单的循环,它将遍历并查看a的索引是否与B中项目的前导编号匹配,然后相应地替换这些编号

C = []

for string in B:
    for x in A:
        if string.startswith(str(A.index(x))):
            C.append(string.replace(str(A.index(x)), x, 1))

尝试使用格式字符串、枚举和zip进行列表理解

A=['a','b','c']

B=['0_txt1','0_txt2','1_txt1','1_txt2','2_txt1','2_txt2']

C = [f"{z}_{x.split('_')[1]}" for x in B for y,z in enumerate(A) if x.split('_')[0] == str(y)]

print(C)

使用列表理解:

B = [x.replace(x.split("_")[0],  A[int(x.split("_")[0])], 1) for x in B]

或者使用Walrus操作符(Python 3.8+)来避免重复计算x.split(“”)[0]

B = [x.replace((p:=x.split("_")[0]),  A[int(p)], 1) for x in B]

相关问题 更多 >