繁体   English   中英

遍历字符串和元组列表并附加唯一的组合

[英]Looping through a list of strings and tuples and appending unique combinations

我一直在研究这个循环问题。 在将元组附加到前面的字符串的同时,如何遍历包含单个字符串和元组的列表? 例如:

gen = ['A', ('x', 'y'), ('t', 'u'), 'B', ('y', 't'), 'B', ('a', 'z')]
fam = ['A', 'B']

幸运的是, fam还包含gen嵌入的单个字符串。 最后,我想要以下内容。

result = [('A',('x','y')), ('A', ('t', 'u')), ('B', ('y', 't')), ('B', ('a', 'z'))

请注意,在单个字符串(例如“ A”)之后的元组将附加到该字符串。

如何遍历gen ,以使元组在其之前附加单个字符串? 到目前为止,我有类似以下内容。 其中将所有组合附加到gen ,然后附加一些。 我愚蠢地创建了一个重复的gen ,即gen2来帮助循环,但无济于事。

gen = ['A', ('x', 'y'), ('t', 'u'), 'B', ('y', 't'), 'B', ('a', 'z')]
fam = ['A', 'B']
gen2 = ['A', ('x', 'y'), ('t', 'u'), 'B', ('y', 't'), 'B', ('a', 'z')]

result = []
for f in fam:
    for g in gen:
        if len(g) == 2:
            for g2 in gen2:
                if g2 == f:
                    result.append((g2,f))
print result

如果我的漫步太混乱,我深表歉意。 我感谢任何见识。

如果您跟踪遇到的最后一个字符串,则可以在一个循环中完成它而无需使用fam 但是,仅当gen的第一个元素是字符串时,它才能正常工作。

gen = ['A', ('x', 'y'), ('t', 'u'), 'B', ('y', 't'), 'B', ('a', 'z')]

result = []
lastStringSeen = None
for i in gen:
    if isinstance(i, str):
        lastStringSeen = i
    else: #must be a tuple
        result.append((lastStringSeen, i))
print result

输出:

[('A', ('x', 'y')), ('A', ('t', 'u')), ('B', ('y', 't')), ('B', ('a', 'z'))]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM