我有一個列表[2,3,4]。我如何在列表中找到所有可能的元素序列? 因此,輸出應爲: [2,3,4] [2,4,3] [3,2,4] [3,4,2] [4,2,3] [4 1,3,2]如何在列表中查找所有可能的元素序列?
6
A
回答
21
爲此,您可以輕鬆地使用itertools.permutations()
:
>>> from itertools import permutations
>>> list(permutations([2, 3, 4]))
[(2, 3, 4), (2, 4, 3), (3, 2, 4), (3, 4, 2), (4, 2, 3), (4, 3, 2)]
如果因爲某些原因,你需要列出,而不是元組:
>>> map(list, permutations([2, 3, 4]))
[[2, 3, 4], [2, 4, 3], [3, 2, 4], [3, 4, 2], [4, 2, 3], [4, 3, 2]]
+3
希望OP列表具有所有獨特的元素。 – Droogans 2012-01-27 22:34:43
+1
也許添加一個鏈接到http://docs.python.org/library/itertools.html#itertools.permutations? – 2012-01-27 22:37:36
5
您正在尋找permutati插件,這樣的事情應該工作:
import itertools
itertools.permutations([2,3,4])
2
除了數據的大抽籤程序的啓動會被格式化爲這樣
ist(permutations([2, 3, 4],[7,2,5],[8,1,4,9]))
的問題是,第一組用於創建第一號列僅 的謝勝利爲2列和第3爲第三
的輸出將是一組3個數字的只是置換是不同
1
只要你知道:
def unique_perms(elems):
"""returns non-duplicate permutations
if duplicate elements exist in `elems`
"""
from itertools import permutations
return list(set(permutations(elems)))
但是,如果你正在做這樣的事情:
print len(unique_perms(elems))
然後嘗試這樣的:
def fac(n):
"""n!"""
if n == 1: return n
return n * fac(n -1)
def unique_perm_count(elems)
n = len(elems)
return fac(2 * n)/fac(n) ** 2
相關問題
- 1. 在appium中查找列表視圖中的所有元素
- 2. 查找列表中的列隊元素
- 3. 查找陣列中的元素列表
- 4. 在列表中生成元素的所有可能組合
- 5. 如何查找列表列表(使用Python)的所有可能組合?
- 6. 如何建立此表中所有可能元組的列表?
- 7. 如何在javascript中的列表中找到所選元素
- 8. 增加每個列表元素在所有可能的方式
- 9. 創建列表元素中的所有可能組合
- 10. 在類列表中查找類元素
- 11. 查找列表元素
- 12. 查找通用列表中是否有可用的元素
- 13. 如何在Python中查找列表中元素的位置?
- 14. 使用python如何根據作爲內部列表元素的鍵在列表列表中查找元素?
- 15. 如何列出長列表格式中的所有元素?
- 16. XML所有元素列表
- 17. Scheme - 查找列表元素出現的所有索引
- 18. 查找列表中元素的位置
- 19. 查找列表中的唯一元素
- 20. 是否有可能查詢列表中的元素?
- 21. 如何從列表中找到所有可能的升序和降序?
- 22. 當列表在字典中時,查找列表的元素?
- 23. 如何找到python中相同的元組列表中的所有元素?
- 24. 如何在嵌套列表中查找給定的元素?
- 25. 列表元素的所有可能組合
- 26. 將列表列表中的所有元素浮在python
- 27. 如何列表中的所有元素追加有效R中
- 28. 列表中的查找列不顯示所有可能的字段
- 29. 如何從有序列表中選擇一個列表元素?
- 30. 使用另一個列表(Python)在配對元素列表中查找元素
可能重複[如何產生的所有排列在Python中的列表](http://stackoverflow.com/questions/104420/how-to-generate-all-permutations-of-a-list-in-python) – 2012-01-30 07:33:53