hyl*_*eus 0 python string loops tuples list
我现在一直在研究这个循环问题.如何在包含单个字符串和元组的列表中循环,同时将元组附加到前面的字符串?例如:
gen = ['A', ('x', 'y'), ('t', 'u'), 'B', ('y', 't'), 'B', ('a', 'z')]
fam = ['A', 'B']
Run Code Online (Sandbox Code Playgroud)
幸运的是,fam还包含内置的单个字符串gen.最后我想要以下内容.
result = [('A',('x','y')), ('A', ('t', 'u')), ('B', ('y', 't')), ('B', ('a', 'z'))
Run Code Online (Sandbox Code Playgroud)
请注意,单个字符串后面的元组(例如"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
Run Code Online (Sandbox Code Playgroud)
如果我的漫步太混乱,我道歉.我很欣赏任何见解.
你可以在一个循环中完成它而不用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
Run Code Online (Sandbox Code Playgroud)
输出:
[('A', ('x', 'y')), ('A', ('t', 'u')), ('B', ('y', 't')), ('B', ('a', 'z'))]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
156 次 |
| 最近记录: |