[英]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.