gpt4 book ai didi

python - 浏览列表并获取每对项目

转载 作者:太空宇宙 更新时间:2023-11-03 16:20:24 26 4
gpt4 key购买 nike

我想浏览如下字符串列表

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 调用,因为这会将字符串分解为单独的字符并将这些字符配对 向上。

zipall = [(i,j) for i in collections for j in collections if i!=j]

# [(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')]

对于此类问题,itertools图书馆非常方便。对于这个具体问题,您可以使用itertools.permutations产生 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')]

关于python - 浏览列表并获取每对项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38537188/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com