在条件上附加清单?

时间:2020-01-01 06:56:58

标签: python

我有两个列表,如下所示:

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功能,但是不能在这里使用。

3 个答案:

答案 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)

您可以进行两次迭代,其中要遍历AB。如果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']

相关问题