0

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

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

如果我的漫游太混乱,我很抱歉。我很欣赏任何见解。

4

1 回答 1

5

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'))]
于 2012-11-14T18:55:49.700 回答