Python 元组列表到字符串列表的转换

Python 元组列表到字符串列表的转换,python,Python,我想将元组列表转换为字符串列表 代码: 第二个代码: total = set() if a is not None: for bb in b: for bbb in bb: if bbb[1] not in a: total.add("".join(bbb)) total_list = list(total) 电流输出: ['-1|kin', '-1|u', '1|jack', '1|finish', '1|hmm

我想将元组列表转换为字符串列表

代码:

第二个代码:

total = set()
if a is not None:
    for bb in b:
        for bbb in bb:
            if bbb[1] not in a:
                total.add("".join(bbb))
total_list = list(total)
电流输出:

['-1|kin', '-1|u', '1|jack', '1|finish', '1|hmm', '-1|already', '-1|kao', '-1|jack', '1|king', '1|kao']
预期产出:


如果bbb[1]在a中,我不想使用相同的列表索引。例如,[(“0 |”,“man”),(“1 |”,“king”)]包含在a中,因此不会打印整个索引。

您正在覆盖每次迭代的
总数。大概您真正想要的是一个集合,您可以这样更新:

total = set()
if a is not None:
    for bb in b:
        for bbb in bb:
            if bbb[1] not in a:
                total.add("".join(bbb))
total_list = list(total)

在这里,这应该是可行的

a = {"man"}
b = [[("-1|","kin"), ("0|", "man")], [("-1|","man"), ("1|", "king")],[("-1|","kao"), ("1|", "jack")],[("-1|","jack"), ("1|", "kao")],[("-1|","u"), ("1|", "hmm")],[("-1|","already"), ("1|", "finish")]]


total = []
if a is not None:
    for bb in b:
        hasA = False
        for bbb in bb:
            if bbb[1] in a:
                hasA = True
        if not hasA:
            temp = []
            for bbb in bb:
                temp.append("".join(bbb))
            total.append(temp)
print(total)

如果顺序不重要:

>>> {t0+t1 for sl in b for t0,t1 in sl if t1 not in a}
{'1|king', '0|leader'}
或者,如果您想维持秩序:

>>> seen=set()
>>> [t0+t1 for sl in b for t0,t1 in sl if t1 not in a and t0+t1 not in seen and not seen.add(t0+t1)]
['1|king', '0|leader']
通过注释,您可以执行以下操作:

>>> [x+y for sl in filter(lambda l: all(y not in a for x,y in l), (sl for sl in b)) for x,y in sl]
['0|leader', '1|king']
或者


我建议从使用更好的变量名开始。您的代码还提供了什么输出?为什么错了?请检查。我以前在粘贴时犯了一些错误。有人能帮我吗?但是输出是错误的。['1 | king'、'0 | leader'、'1 | king']应该只有['0 | leader'、'1 | king']@初学者,所以您只希望输出中的项目是唯一的?好的,所以使用集合(请参阅更新)来测试唯一性有一种方法不检查唯一性。我只想忽略“人”的索引。例如,[(“0 |“,“man”),(“1 |“,“king”)]包含在a中,因此不会打印整个索引。有一种方法不检查临时值是否总计。我不希望找到唯一性,但我只想忽略带有“man”的索引。例如,[(“0 |”,“man”),(“1 |”,“king”)]包含在a中,因此整个索引将不会被打印。可以这样做吗?先生,有可能吗?
>>> [x+y for sl in filter(lambda l: all(y not in a for x,y in l), (sl for sl in b)) for x,y in sl]
['0|leader', '1|king']
>>> [x+y for sl in b for x,y in sl if all(t1 not in a for t0,t1 in sl)]
['0|leader', '1|king']