Python 快速浏览列表并获取每一对项目

Python 快速浏览列表并获取每一对项目,python,string,zip,Python,String,Zip,我想快速浏览下面的字符串列表 collections = [u'Room Designers', u'BCRF', u'House'] 我希望实现列表中三个元素的6种组合: ("Room Designers", "BCRF"), ("Room Designers", "House"), ("BCRF", "House"), ("BCRF", "Room Designers"), ("House", "BCRF"), ("House", "Room") 下面是我的代码 zipall = [zi

我想快速浏览下面的字符串列表

collections = [u'Room Designers', u'BCRF', u'House']
我希望实现列表中三个元素的6种组合:

("Room Designers", "BCRF"), ("Room Designers", "House"), ("BCRF", "House"), ("BCRF", "Room Designers"), ("House", "BCRF"), ("House", "Room")
下面是我的代码

zipall = [zip(i,j) for i in collections for j in collections if i!=j]
我得到:

[[(u'R', u'B'), (u'o', u'C'), (u'o', u'R'), (u'm', u'F')], [(u'R', u'H'), (u'o', u'o'), (u'o', u'u'), (u'm', u's'), (u' ', u'e')], [(u'B', u'R'), (u'C', u'o'), (u'R', u'o'), (u'F', u'm')], [(u'B', u'H'), (u'C', u'o'), (u'R', u'u'), (u'F', u's')], [(u'H', u'R'), (u'o', u'o'), (u'u', u'o'), (u's', u'm'), (u'e', u' ')], [(u'H', u'B'), (u'o', u'C'), (u'u', u'R'), (u's', u'F')]]

有什么更好的方法可以做到这一点?谢谢

如果希望按照编写的方式执行,则需要省略最后的
zip
调用,因为这会将字符串分解为各自的字符并将其配对

不过,对于这类问题,该库非常方便。对于这个特定的问题,可以使用生成2个元素的所有置换。对于排列(相对于组合),配对的顺序很重要

import itertools

# Create all permutations of 2 items
output = list(itertools.permutations(collections, 2))

# [(u'Room Designers', u'BCRF'), (u'Room Designers', u'House'), (u'BCRF', u'Room Designers'), (u'BCRF', u'House'), (u'House', u'Room Designers'), (u'House', u'BCRF')]

您得到的是单字母组合,因为您要将两个字符串传递给
zip
,而字符串本身就是一个字符序列,因此zip从每个字符串中提取出成对的单字符。谢谢。是的,的确如此。我也没有意识到itertools可以如此强大!!非常感谢。这正是我需要的。你的回答也很彻底,很有帮助。现在我知道有两天可以得到我想要的!!谢谢
import itertools

# Create all permutations of 2 items
output = list(itertools.permutations(collections, 2))

# [(u'Room Designers', u'BCRF'), (u'Room Designers', u'House'), (u'BCRF', u'Room Designers'), (u'BCRF', u'House'), (u'House', u'Room Designers'), (u'House', u'BCRF')]