如何为 python 中的所有排列打乱列表的一部分?
How can I shuffle a part of list for all permutations in python?
我有以下列表:
columns1 = ["title", "abstract","groups"]
columns2 = ["title", "abstract","groups","keywords"]
columns3 = ["title", "abstract","groups","topics"]
columns4 = ["title", "abstract","groups","keywords","topics"]
columns5 = ["title", "abstract","groups","topics","keywords"]
columns6 = ["title", "abstract","keywords"]
columns7 = ["title", "abstract","keywords","groups"]
columns8 = ["title", "abstract","keywords","topics"]
columns9 = ["title", "abstract","keywords","groups","topics"]
columns10 = ["title", "abstract","keywords","topics","groups"]
columns11 = ["title", "abstract","topics"]
columns12 = ["title", "abstract","topics","groups"]
columns13 = ["title", "abstract","topics","keywords"]
columns14 = ["title", "abstract","topics","groups","keywords"]
columns15 = ["title", "abstract","topics","keywords","groups"]
如您所见,我想保持前两个不变,并随机排列接下来的三个单词以进行所有不同的排列(或组合 - 我忘了是哪个)。
如何使用循环创建此列表?
它确实是一个排列而不是组合,因为你要考虑 [a,b,c]
不同于 [a,c,b]
为此,您可以像这样创建一个循环:
elements_base = ["title", "abstract"]
elements_plus = ["groups","topics","keywords"]
import itertools
for i in range(3):
for element in itertools.permutations(elements_plus,i+1):
print(elements_base + list(element))
结果是:
['title', 'abstract', 'groups']
['title', 'abstract', 'topics']
['title', 'abstract', 'keywords']
['title', 'abstract', 'groups', 'topics']
['title', 'abstract', 'groups', 'keywords']
['title', 'abstract', 'topics', 'groups']
['title', 'abstract', 'topics', 'keywords']
['title', 'abstract', 'keywords', 'groups']
['title', 'abstract', 'keywords', 'topics']
['title', 'abstract', 'groups', 'topics', 'keywords']
['title', 'abstract', 'groups', 'keywords', 'topics']
['title', 'abstract', 'topics', 'groups', 'keywords']
['title', 'abstract', 'topics', 'keywords', 'groups']
['title', 'abstract', 'keywords', 'groups', 'topics']
['title', 'abstract', 'keywords', 'topics', 'groups']
我有以下列表:
columns1 = ["title", "abstract","groups"]
columns2 = ["title", "abstract","groups","keywords"]
columns3 = ["title", "abstract","groups","topics"]
columns4 = ["title", "abstract","groups","keywords","topics"]
columns5 = ["title", "abstract","groups","topics","keywords"]
columns6 = ["title", "abstract","keywords"]
columns7 = ["title", "abstract","keywords","groups"]
columns8 = ["title", "abstract","keywords","topics"]
columns9 = ["title", "abstract","keywords","groups","topics"]
columns10 = ["title", "abstract","keywords","topics","groups"]
columns11 = ["title", "abstract","topics"]
columns12 = ["title", "abstract","topics","groups"]
columns13 = ["title", "abstract","topics","keywords"]
columns14 = ["title", "abstract","topics","groups","keywords"]
columns15 = ["title", "abstract","topics","keywords","groups"]
如您所见,我想保持前两个不变,并随机排列接下来的三个单词以进行所有不同的排列(或组合 - 我忘了是哪个)。
如何使用循环创建此列表?
它确实是一个排列而不是组合,因为你要考虑 [a,b,c]
不同于 [a,c,b]
为此,您可以像这样创建一个循环:
elements_base = ["title", "abstract"]
elements_plus = ["groups","topics","keywords"]
import itertools
for i in range(3):
for element in itertools.permutations(elements_plus,i+1):
print(elements_base + list(element))
结果是:
['title', 'abstract', 'groups']
['title', 'abstract', 'topics']
['title', 'abstract', 'keywords']
['title', 'abstract', 'groups', 'topics']
['title', 'abstract', 'groups', 'keywords']
['title', 'abstract', 'topics', 'groups']
['title', 'abstract', 'topics', 'keywords']
['title', 'abstract', 'keywords', 'groups']
['title', 'abstract', 'keywords', 'topics']
['title', 'abstract', 'groups', 'topics', 'keywords']
['title', 'abstract', 'groups', 'keywords', 'topics']
['title', 'abstract', 'topics', 'groups', 'keywords']
['title', 'abstract', 'topics', 'keywords', 'groups']
['title', 'abstract', 'keywords', 'groups', 'topics']
['title', 'abstract', 'keywords', 'topics', 'groups']