我有两个列表,如下所示:
A = ["Ram","Joseph","Arman","Ravi", "Sundar","Sushmita"]
B = ["Su","Ra"]
我想创建另一个名为C的列表,并希望附加提供的A项,如果它以B的任何元素开头,则最多只能追加一个名字。
因此,在这种情况下,预期结果应该是
C= ["Ram","Joseph","Arman", "Sundar"]
“ Ravi”和“ Sushmita”不应添加到C列表中,因为它以“ Ra”和“ Su”开头,而其“ Ram”和“ Sundar”已经添加到了C。 我知道list中的count功能,但是不能在这里使用。
答案 0 :(得分:0)
这是一种使用set
数据结构的方法。
A = ["Ram","Joseph","Arman","Ravi", "Sundar","Sushmita"]
B = ["Su","Ra"]
usedPatterns = set()
C = []
for string in A:
foundPattern = None
for pattern in B:
if string.startswith(pattern):
foundPattern = pattern
break
if foundPattern is None: # If pattern not found, append to C
C.append(string)
elif foundPattern not in usedPatterns: # If pattern found and not used before, append to C
usedPatterns.add(foundPattern)
C.append(string)
print(C)
输出
['Ram', 'Joseph', 'Arman', 'Sundar']
答案 1 :(得分:0)
您可以进行两次迭代,其中要遍历A
和B
。如果B
中的字符串来自A
,则可以将值附加到C。
x = ["random", "test", "three"]
e = ["ran", "te"]
c = []
for item_in_x in x:
for item_in_e in e:
if item_in_e in item_in_x:
c.append(item_in_x)
['random', 'test']
答案 2 :(得分:0)
A = ["Ram","Joseph","Arman","Ravi", "Sundar","Sushmita"]
B = ["Su","Ra"]
C = []
D = []
repeat = False
for a in A:
for d in D:
if d == a[:len(d)]:
repeat = True
break
if not repeat:
for b in B:
if b == a[:len(b)]:
D.append(b)
break
C.append(a)
repeat = False
print(C)
输出:
['Ram', 'Joseph', 'Arman', 'Sundar']