程序问答   发布时间:2022-06-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了组合列表中的元素以形成新列表大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决组合列表中的元素以形成新列表?

开发过程中遇到组合列表中的元素以形成新列表的问题如何解决?下面主要结合日常开发的经验,给出你关于组合列表中的元素以形成新列表的解决方法建议,希望对你解决组合列表中的元素以形成新列表有所启发或帮助;

我不确定我要做什么的技术术语,但这是它的要点。我有以下列表:

x = ['a','b','c']

我想创建一个新列表 y 其中 len(y) = 2 ** len(x) 使得:

y = ['∅','a','c','a,b',c','b,b,c']

我不确定在循环 x 以创建所需列表 y 时使用什么操作。

解决方法

虽然这比 itertools 效率低得多,但如果您不被允许使用库,您可以创建一个递归函数来生成幂集并在列表推导中使用 join() 组合字符串:

def powerSet(L):
    return [[]] if not L else [c for p in powerSet(L[1:]) for c in (p,L[:1]+p)]

x = ['a','b','c']
y = [",".join(s) or "ø" for s in powerSet(x)]

print(y)
['ø','a','a,b','c',c','b,b,c']

您也可以直接在迭代函数中执行此操作,该函数使用列表中的每个字母扩展所有先前的组合:

def allCombos(L):
    result = [""]
    for c in L:
        result.extend([f"{r},{c}" if r else c for r in result])
    result[0] = "ø"
    return result

print(allCombos(x))
['ø',c']

大佬总结

以上是大佬教程为你收集整理的组合列表中的元素以形成新列表全部内容,希望文章能够帮你解决组合列表中的元素以形成新列表所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: