我有一个由字符串和列表组成的列表:
a = ['a', 'b', 'c', 'd', 'e', ['fgh', 'rst'], 'i',['quv','wxy']]
如何连接此列表中的每个元素,以便所有字符串元素都包含每个内部列表元素中的一个,同时保持它们在原始列表中的位置?例如:
targets = ['abcdefghiquv',
'abcdefghiwxy',
'abcderstiquv',
'abcderstiwxy',
]
我尝试了下面的方式,但是,这只适用于最后一个元素是列表的情况
combinations = []
combinations2 = []
for s in a:
if isinstance(s, basestring):
combinations.append(s)
else:
seqint = ''.join(combinations)
combinations2.append([seqint])
combinations2.append(s)
combinations[:]=[]
for comb in list(itertools.product(*combinations2)):
print ''.join(comb)
使用
itertools.product
无疑是一种方法。我会这样做(可能不完全正确,因为我从来没有太多地使用遗留Python):最后一步叫做列表理解。它们非常有用,因此可以很好地利用时间去阅读它们(还有字典理解和生成器理解)。你知道吗
现在我们有一个新的列表,如下所示:
然后像以前一样完成:
编辑:如果你真的想变得粗暴,你可以在一个语句中完成所有这些。但我不推荐(不太可读):
似乎您正在学习,所以我要补充一点:除非您有很好的理由学习使用传统Python(2),否则我建议您切换到现代Python(当前版本3.6)。在这一点上,一切都朝着这个方向发展(尽管在许多上下文中,遗留的Python可能还会存在很长一段时间)。你知道吗
另一种方法是获取列表索引并使用itertools.产品你知道吗
作为一种功能样式,您可以
reduce
列出:相关问题 更多 >
编程相关推荐