1. 程式人生 > 程式設計 >淺談python輸出列表元素的所有排列形式

淺談python輸出列表元素的所有排列形式

例如:

[‘a',‘b',‘c'] 輸出 [‘a',‘c'] [‘a',‘c',‘b'] [‘b',‘a',‘c'] [‘b',‘a'] [‘c',‘b'] [‘c',‘a']

方法一:利用遞迴的方式實現

def permutation(li):
  len_list = len(li)
  if len_list == 1:
    return li

  result = []
  for i in range(len_list):
    res_list = li[:i] + li[i+1:]
    s = li[i]
    per_result = permutation(res_list)
    if len(per_result) == 1:
      result.append(li[i:i + 1] + per_result)
    else:
      result += [[s] + j for j in per_result]
  return result

方法二:利用python自帶的模組

import itertools

def permutation(li):
  print(list(itertools.permutations(li)))

補充拓展:python實現四個數字的全排列

首先我們使用常規做法,迴圈交換完成。

lst = [1,3,5,8]

for i in range(0,len(lst)):
  lst[i],lst[0] = lst[0],lst[i]
  for j in range(1,len(lst)):
    lst[j],lst[1] = lst[1],lst[j]
    for h in range(2,len(lst)):
      print(lst)
    lst[j],lst[j]
  lst[i],lst[i]

如果列表較長,元素較多,以上常規方法實現起來就比較吃力了,以下我們採用遞迴方式實現。

def permutations(position):
  if position == len(lst) - 1:
    print(lst)
  else:
    for index in range(position,len(lst)):
      lst[index],lst[position] = lst[position],lst[index]
      permutations(position+1)
      lst[index],lst[index]
permutations(0) 

以上這篇淺談python輸出列表元素的所有排列形式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支援我們。