2014-06-22 45 views
0

假设我有如何遍历不同长度的字符串列表?

lists = ["ABC","AC","CCCC","BC"]

我想去的地方在我的新列表中的项目是按位置基于lists含义列表中的每个字符串采取这样的立场0分组的新名单(“ABC”的位置0 “A”)并从中制作一个字符串。

position = ["AACB","BCCC","CC","C"]

我尝试:

for i in range(0,4): want = [lists[i] for stuff in lists]

,我得到

IndexError: string index out of range

这是有道理的,因为所有的字符串是不同的尺寸。谁能帮忙?

+4

你的问题没有任何意义。请澄清它,以便我可以提供帮助。 –

+0

我不知道你在做什么,但是你得到的错误是由于试图访问列表[2](第三项)在2项目列表中造成的。 – dansalmo

+0

我假设如果你有第三个字符串BC,你的预期输出是[“AAB”,“BBC”,“C”]? – Ben

回答

5

我想你可能想要这个:

import itertools 
lists = ["ABC","AC","CCCC","BC"] 
position = map(''.join,itertools.izip_longest(*lists, fillvalue='')) 

,你会得到:

['AACB', 'BCCC', 'CC', 'C'] 

编辑:现在有新的范例......

+2

OP想要什么,他说他想要什么,有时候是两回事。 – Daniel

+0

有没有更简单的方法来做到这一点没有itertools? – theamateurdataanalyst

+3

@ user2801122的方式来看礼物马在嘴里。为什么不做你自己的尝试?例如,你可以在每个输入iterable上尝试''并且在'IndexError'上'传递'。 – jonrsharpe

2

你可以使用这个列表理解:

>>> lists = ["ABC","AC","CCCC","BC"] 
>>> [''.join([s[i:i+1] for s in lists]) for i, el in enumerate(lists)] 
['AACB', 'BCCC', 'CC', 'C'] 

使用切片符号可防止不存在的元素上的索引错误。