python實現求解列表中元素的排列和組合

2022-08-20 01:45:16 字數 2202 閱讀 8952

求解列表中元素的排列和組合問題這個問題之前就遇到過幾次沒有太留意,最近在做題的時候遇上挺多的排列組合問題的,想來有必要溫習一下了,今天花點時間寫一下,之前都是手工寫的,後來知道可以直接使用python的內建模組就可以完成這個工作了,今天就使用python的itertools模組來完成這個工作,一共解決四個問題:

1.生成排列,列表中元素不允許重複出現

2.生成排列,列表中元素可以重複出現

3.生成組合,不限元素個數,列表中元素不允許重複出現

4.生成組合,不限元素個數,列表中元素可以重複出現

#!usr/bin/env python 

#encoding:utf-8

'''''

__author__:沂水寒城

功能:求解列表中元素的排列和組合問題

'''from

itertools import product

from

itertools import combinations

import itertools

def test_func1(num_list):

'''''

生成排列

列表中元素不允許重複出現

排列數計算為:n!,其中n為num_list列表中元素個數

'''tmp_list =itertools.permutations(num_list)

res_list=

for one in

tmp_list:

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 in

num_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)

python列表中元素插入位置總結

要完成的操作是把乙個列表裡的元素通過for迴圈新增到另外乙個列表裡,但是通過insert 方法新增到另外乙個列表後卻發現元素的位置與原始列表的顛倒了。如以下例項 li1 1 2 3 4 5 li2 for item in li1 li2.insert 0,item 因為每次迴圈元素都是從下標為0的位...

Python高效程式設計 統計列表中元素頻率

from collections import counter from random import randint import os import re 統計序列中元素出現的頻率 data randint 0,20 for in range 30 print data c dict.fromke...

python怎麼統計列表中元素的個數

python統計列表中元素的個數的方法 可以通過count 方法來實現。該方法可以統計字串中某個字元出現的次數,並返回子字串在字串 現的次數。具體用法如 count list.count i 函式介紹 count 函式 python count 方法用於統計字串裡某個字元出現的次數。可選引數為在字串...