求解列表中元素的排列和组合问题这个问题之前就遇到过几次没有太留意,最近在做题的时候遇上挺多的排列组合问题的,想来有必要温习一下了,今天花点时间写一下,之前都是手工写的,后来知道可以直接使用python的内置模块就可以完成这个工作了,今天就使用python的itertools模块来完成这个工作,一共解决四个问题:

1.生成排列,列表中元素不允许重复出现

2.生成排列,列表中元素可以重复出现

3.生成组合,不限元素个数,列表中元素不允许重复出现

4.生成组合,不限元素个数,列表中元素可以重复出现

因为大家都有排列组合的知识这里就不累赘了,问题很简单,下面看具体的实现:

#!usr/bin/env python

#encoding:utf-8

'''''

__Author__:沂水寒城

功能:求解列表中元素的排列和组合问题'''fromitertools import productfromitertools import combinations

import itertools

def test_func1(num_list):'''''

生成排列

列表中元素不允许重复出现

排列数计算为:n!,其中n为num_list列表中元素个数''' tmp_list =itertools.permutations(num_list)

res_list=[]for one intmp_list:

res_list.append(one)

print res_list

print'元素不允许重复出现排列总数为:', len(res_list)

def test_func11(num_list):'''''

生成排列

列表中元素可以重复出现

排列总数计算为:(n*n*n...*n),一共n个n相乘''' num=len(num_list)

res_list=list(product(num_list,repeat=num))

print res_list

print'元素可以重复出现排列总数为:', len(res_list)

def test_func2(num_list):'''''

生成组合,不限元素个数

列表中元素不允许重复出现

组合数计算为:2^n,其中n为num_list列表中元素个数''' res_list=[]for i in range(len(num_list)+1):

res_list+=list(combinations(num_list, i))

print res_list

print'元素不允许重复出现组合总数为:', len(res_list)

def test_func22(num_list):'''''

生成组合,不限元素个数

列表中元素可以重复出现''' res_list=[]

num_list1=[str(i) for i innum_list]for i in range(0,len(num_list)+1):

res_list+=[''.join(x) for x in itertools.product(*[num_list1] *i)]

print res_list

print'元素可以重复出现组合总数为:', len(res_list)if __name__ == '__main__':

num_list=[1,2,3,4]

test_func1(num_list)

print'-------------------------------------'test_func11(num_list)

print'-------------------------------------'test_func2(num_list)

print'-------------------------------------'test_func22(num_list)

————————————————

版权声明:本文为CSDN博主「程序员牡蛎」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/chengxun03/article/details/105498145

python中如何求列表中的和_python实现求解列表中元素的排列和组合相关推荐

  1. 输入两个由整型数构成的集合(元素个数均为5)分别放到数组A和B中,求这两个集合的交集(交集的元素由两个集合中的相同元素构成),最后输出交集中的元素。

    [问题描述]输入两个由整型数构成的集合(元素个数均为5)分别放到数组A和B中,求这两个集合的交集(交集的元素由两个集合中的相同元素构成),最后输出交集中的元素,要求在主函数中输入A和B数组,并输出交集 ...

  2. python中列表实现去重使用_Python实现嵌套列表去重方法示例

    发现问题 python嵌套列表大家应该都不陌生,但最近遇到了一个问题,这是工作中遇到的一个坑,首先看一下问题 raw_list = [["百度", "CPY"] ...

  3. python更改数据框指定位置的数据_python – 更改数据框中多个loc的最快方法

    我有一个包含100万行的pandas数据帧.我想用另一组值替换列中900,000行的值.有没有for循环(我需要两天才能完成)的快速方法吗? 例如,查看此示例数据框,其中我已将100万行压缩为8行 i ...

  4. python中用来返回序列的最大函数_Python程序设计2——列表和元组

    数据结构:更好的说法是从数据角度来说,结构化数据,就是说数据并不是随便摆放的,而是有一定结构的,这种特别的结构会带来某些算法上的性能优势,比如排序.查找等. 在Python中,最基本的数据结构是序列( ...

  5. python修改列表指定位置的_Python 基础教程—列表(1)

    Python内置了多种序列,本次讨论:列表.列表是Python提供的容器型数据类型.可变并且有序. 可变 - 列表中的每个元素的值可变,列表的长度可变,列表中的顺序可变.(支持增.删.改) 有序 - ...

  6. python列表删除指定字典_Python:从列表中删除字典

    thelist[:] = [d for d in thelist if d.get('id') != 2] 编辑:由于有人对这段代码的表现有所怀疑(有些是基于误解Python的性能特征,有些则假设超出 ...

  7. python列表去掉特定项_python实现删除列表中某个元素的3种方法

    python中关于删除list中的某个元素,一般有三种方法:remove.pop.del: 1.remove: 删除单个元素,删除首个符合条件的元素,按值删除 举例说明: ? [1, 3, 4, 5, ...

  8. python列表与数字乘法_Python 3 – 将列表中的数字乘以2

    我要求完成的代码的目的是接收给定库存的输入,将它们返回到一行中的列表中.然后在第二行,复制列表,但这次加倍数字. 给定的输入是 Choc 5; Vani 10; Stra 7; Choc 3; Str ...

  9. python 10个100以内随机整数编辑_Python在小学数学中的应用

    摘要:本文旨在说明Python编程在小学数学教学过程中的应用.通过6个案例,由浅入深地展示了Python在编题.解题.画图表.成绩分析中的强大功能,有效的提高了教学中的工作效率. 倡导小学教育工作者学 ...

最新文章

  1. eclipse启动maven项目报类找不到
  2. PAT甲级1087 All Roads Lead to Rome (30分):[C++题解]dijkstra求单源最短路综合、最短路条数、保存路径
  3. java jpa @joincolumn 字段不为空_拥抱开源从表设计到 JPA 实现
  4. ubuntu下安装jdk、tomcat、mysql
  5. android 模拟器声音设置,使用android模拟器录制声音
  6. 【升职加薪必备架构图】Springboot学习路线汇总
  7. WordPress主题:Zibll子比主题 V4.0 绿色版
  8. C# DataTable.Select() 筛选数据
  9. SignalR入门之Hub
  10. IDEA 2022 CPU占用100%问题解决
  11. python爬取淘宝数据魔方_淘宝数据魔方是什么(淘宝数据魔方技术架构解析)
  12. asp二进制mysql_asp 二进制保存数据库
  13. 男生和女生的十个瞬间 (温馨啊)【转载】
  14. java截取固定大小图片_JAVA技巧(长字符串按指定长度截取)
  15. C# 网络爬虫利器之Html Agility Pack如何快速实现解析Html
  16. Cisco思科IPS签名策略配置引擎告警和日志动作
  17. MCNP xsdir中设置XS文件路径并运行一个inp例子
  18. 打印机服务无法启动 错误代码1068
  19. 计算机修改人类记忆曲线,Memory Helper - 艾宾浩斯遗忘曲线记忆助手
  20. 空白设计手法在平面设计中有哪些作用

热门文章

  1. 采药2_纪中2540_dp
  2. 前缀 中缀 后缀表达式
  3. 5. Binary Tree Postorder Traversal
  4. javascript对于DOM加强
  5. SQL Server XML性能优化(Best Practices)
  6. DataGrid 完全攻略之二(把数据导出到Excel)
  7. java 跨域上传_java使用webuploader实现跨域上传详解
  8. php如何制作视频特效,用PS将bmp图片制作出漂亮的动态视频效果
  9. editorloop 占用_systemd CPU占用100%,并出现大量僵尸进程
  10. spring mvc原理_Spring MVC的工作原理,我们来看看其源码实现