我正在寻找一种更优雅/ Pythonic的方式来完成以下任务:
我有两个字符串列表A
和B
,其中B
几乎是A
的一个子集,但B
有一个后缀*
对于某些元素。我的目标是将A
中的元素替换为B
中具有后缀的相应元素。一个例子:
A = ['abcd', 'ddse', '123d', 'aaaaa']
B = ['ddse', 'aaaaa*']
我希望获得['abcd', 'ddse', '123d', 'aaaaa*']
列表。我能想到的方法是将A
拆分并转换为两列数据框并与B
合并,然后将*
列放回B
中的列。但这看起来并不优雅,因为我需要做很多这样的操作。有没有更好的方法呢?
谢谢!
答案 0 :(得分:1)
这个怎么样?:
def doit(A,B):
for n,i in enumerate(A):
if i + '*' in B:
A[n] = i + '*'
答案 1 :(得分:1)
如果*
总是在最后,那么使用此代码非常简单:
C = [(x + '*') if ((x + '*') in B) else x for x in A]
要对列表列表执行相同操作,请尝试此操作;您将在列表C中获得结果:
C = []
for A, B in zip(A_L, B_L):
C.append([x + '*' if ((x + '*') in B) else x for x in A])
答案 2 :(得分:1)
此?
[ e+'*' if e+'*' in B else e for e in A]
答案 3 :(得分:0)
因此,您真的要检查a
的每个元素A
,a*
是否有B
元素,如果有a*
a
用A
替换a*
中的#make a copy of A with * appended to every element
C = [a + "*" for a in A]
#loop through C and check
for i in range(len(A)):
if C[i] in B:
A[i] = C[i]
。
{{1}}