Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 计算列表中变量长度的总值_Python_Python 2.7 - Fatal编程技术网

Python 计算列表中变量长度的总值

Python 计算列表中变量长度的总值,python,python-2.7,Python,Python 2.7,我有一个最多可以包含4个变量的列表。我想实现的是将下面的所有组合进行组合,逐步遍历它们,计算出每个组合的列表总长度。我想把这个组合和长度写在一起。下面的每个变量只能在列表中出现一次,但是称为“James”的变量可以出现多次。变量包括: 詹姆斯(可以出现多次) 宝琳(只能出现一次) 莎拉(只能出现一次) 本尼迪克特(只能出现一次) Phillippa(只能出现一次) 约翰(只能出现一次) 所以,我想循环将变量添加到我的列表中,计算长度,然后用下一个组合再次执行 我很高兴知道如何生成(len(m

我有一个最多可以包含4个变量的列表。我想实现的是将下面的所有组合进行组合,逐步遍历它们,计算出每个组合的列表总长度。我想把这个组合和长度写在一起。下面的每个变量只能在列表中出现一次,但是称为“James”的变量可以出现多次。变量包括:

  • 詹姆斯(可以出现多次)
  • 宝琳(只能出现一次)
  • 莎拉(只能出现一次)
  • 本尼迪克特(只能出现一次)
  • Phillippa(只能出现一次)
  • 约翰(只能出现一次)
所以,我想循环将变量添加到我的列表中,计算长度,然后用下一个组合再次执行

我很高兴知道如何生成
(len(my_list)
,但我只是想知道,逐步生成不同组合的最佳方法是什么?因此,作为一个开始,如下所示:-

my_list = ['James', 'James', 'James', 'James']
my_list = ['Pauline', 'James', 'James', 'James']
......
my_list = ['John', 'Sarah', 'Benedict', 'Phillippa']
我只是不确定如何遍历这6个名称并创建所有可能的组合来填充列表

我不是在寻找解决方案,而是在寻找如何执行这个迭代函数,如果有人能给我指出正确的方向


谢谢大家

此问题是为
itertools
设置的,例如:

In []:
import itertools as it

n = 4
choices = ['James']*n + ['Pauline', 'Sarah', 'Benedict', 'Phillippa', 'John']
list(it.combinations(choices, r=n))

Out[]:
[('James', 'James', 'James', 'James'),
 ('James', 'James', 'James', 'Pauline'),
 ('James', 'James', 'James', 'Sarah'),
 ('James', 'James', 'James', 'Benedict'),
 ...
 ('Pauline', 'Sarah', 'Benedict', 'John'),
 ('Pauline', 'Sarah', 'Phillippa', 'John'),
 ('Pauline', 'Benedict', 'Phillippa', 'John'),
 ('Sarah', 'Benedict', 'Phillippa', 'John')]
但很难从您的示例中看出,您可能正在寻找
置换

In []:
list(it.permutations(choices, r=n))

Out[]:
[('James', 'James', 'James', 'James'),
 ('James', 'James', 'James', 'Pauline'),
 ('James', 'James', 'James', 'Sarah'),
 ('James', 'James', 'James', 'Benedict'),
 ...
 ('James', 'John', 'Benedict', 'James'),
 ('James', 'John', 'Benedict', 'James'),
 ('James', 'John', 'Benedict', 'James'),
 ('James', 'John', 'Benedict', 'Pauline'),
 ...]

此问题是为
itertools
设置的,例如:

In []:
import itertools as it

n = 4
choices = ['James']*n + ['Pauline', 'Sarah', 'Benedict', 'Phillippa', 'John']
list(it.combinations(choices, r=n))

Out[]:
[('James', 'James', 'James', 'James'),
 ('James', 'James', 'James', 'Pauline'),
 ('James', 'James', 'James', 'Sarah'),
 ('James', 'James', 'James', 'Benedict'),
 ...
 ('Pauline', 'Sarah', 'Benedict', 'John'),
 ('Pauline', 'Sarah', 'Phillippa', 'John'),
 ('Pauline', 'Benedict', 'Phillippa', 'John'),
 ('Sarah', 'Benedict', 'Phillippa', 'John')]
但很难从您的示例中看出,您可能正在寻找
置换

In []:
list(it.permutations(choices, r=n))

Out[]:
[('James', 'James', 'James', 'James'),
 ('James', 'James', 'James', 'Pauline'),
 ('James', 'James', 'James', 'Sarah'),
 ('James', 'James', 'James', 'Benedict'),
 ...
 ('James', 'John', 'Benedict', 'James'),
 ('James', 'John', 'Benedict', 'James'),
 ('James', 'John', 'Benedict', 'James'),
 ('James', 'John', 'Benedict', 'Pauline'),
 ...]

谢谢@AChampion。使用Python 2.7,我在'choices=[*['James']*n,…]上遇到语法错误。@thefragileomen为什么要用这两个Python版本进行标记?你是否试图编写兼容这两个版本的代码?谢谢@AChampion。使用Python 2.7,我在'choices=[*['James']*n,…]上遇到语法错误@为什么要用这两个python版本进行标记?您是否正在尝试编写兼容这两个版本的代码?