仅当单词的一部分不在列表中时才追加

时间:2019-11-21 12:52:25

标签: python list character

我有一个类似于以下的列表,并希望从中列出两个列表。如果第一个包含S01_a,则S01_b应该在第二个列表中。

my_list = ['S01_a', 'S01_b', 'S02_a', 'S02_b', 'S03_a', 'S03_b', 'S04_a', 'S04_b']

我尝试过此操作,但是我不知道如何引用list1中项目的[1:2]字符。有没有人解决方案?

stims = ["S01_a", "S01_b", "S02_a", "S02_b", "S03_a", "S03_b", "S04_a", "S04_b"]

l1 = []
l2 = []
for item in stims:
    if item[1:2] not in l1:
        l1.append(item)
    else:
        l2.append(item)


print(l1)
print(l2)

输出为:

['S01_a', 'S01_b', 'S02_a', 'S02_b', 'S03_a', 'S03_b', 'S04_a', 'S04_b']
[]

谢谢。

1 个答案:

答案 0 :(得分:3)

您可以将any()与生成器结合使用,以针对列表中的每个元素测试item[1:3]

for item in stims:
    if not any(item[1:3] == el[1:3] for el in l1):
        l1.append(item)
    else:
        l2.append(item)

您需要使用切片[1:3]。请记住,第二个索引不是包含在内的,因此[1:2]仅选择数字0,而不选择两个数字0102等。