Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.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 - Fatal编程技术网

Python 组合列表元素

Python 组合列表元素,python,Python,问题: 给定一组数字S_a={n1,n2,n3,…,na}生成以下类型的数字组合: {Sk,Sp}, where k=1...a, p=k+1,..,a 可以很容易地将此解决方案构造为循环: N = len(S) for i in range(0, N): for j in range(i+1, N): print("%d,%d" %(i,j)) 但我正在寻找一个矢量化的解决方案 另一个变体是考虑对象列表: class A: def fun

问题: 给定一组数字
S_a={n1,n2,n3,…,na}
生成以下类型的数字组合:

{Sk,Sp}, where k=1...a, p=k+1,..,a
可以很容易地将此解决方案构造为循环:

N = len(S)
for i in range(0, N):
    for j in range(i+1, N):
                 print("%d,%d" %(i,j))
但我正在寻找一个矢量化的解决方案


另一个变体是考虑对象列表:

class A:
    def function(self, a):
        pass
L = [a1, a2, a3, a4, a5 ]

#where a1,a2,an are of class A.
如何编写此循环的矢量化版本:

N = len(L)-1
for i in range(0, N):
    for j in range(i+1, N):
        L[i].function(L[j])
改用:

如果您想将其分离,文档将详细说明实现

将其应用于您拥有的对象列表非常简单:

for i, j in itertools.combinations(L, 2):
    i.function(j)
改用:

如果您想将其分离,文档将详细说明实现

将其应用于您拥有的对象列表非常简单:

for i, j in itertools.combinations(L, 2):
    i.function(j)
如果“矢量化”的意思是“内部循环发生在
numpy
C代码中”:

是生成组合的最简单方法

对于在
L[i]上操作的更一般情况,对于所有
i!=j
,或
i
,或您正在考虑的任何其他情况,有几种方法可以做到这一点您可以显式地使用
广播
,或者您可以创建L的“列向量”和“行向量”并只执行该操作,或者您可以创建L的移位副本的2D数组并对其应用该操作,或者……这取决于你在做什么。

如果“矢量化”的意思是“内部循环发生在
numpy
C代码中”:

是生成组合的最简单方法


对于在
L[i]上操作的更一般情况,对于所有
i!=j
,或
i
,或您正在考虑的任何其他情况,有几种方法可以做到这一点您可以显式地使用
广播
,或者您可以创建L的“列向量”和“行向量”并只执行该操作,或者您可以创建L的移位副本的2D数组并对其应用该操作,或者……这取决于你在做什么。

你说的“矢量化”是什么意思?通常,在Python数值编程中,“矢量化”的意思是“内部循环发生在
numpy
C代码内部”。但是你没有任何
numpy
,所以我怀疑你在这里的意思可能有所不同。@abarnert那是你的否决票吗?或者有人对这个问题的数学措辞感到困惑?我对这个问题都没有投票。特别是对于新用户,除非OP主动拒绝提供足够的信息使其成为有用的问题,否则我通常不会投反对票。你说的“矢量化”是什么意思?通常,在Python数值编程中,“矢量化”的意思是“内部循环发生在
numpy
C代码内部”。但是你没有任何
numpy
,所以我怀疑你在这里的意思可能有所不同。@abarnert那是你的否决票吗?或者有人对这个问题的数学措辞感到困惑?我对这个问题都没有投票。特别是对于较新的用户,除非OP主动拒绝提供足够的信息使其成为有用的问题,否则我通常不会投反对票。@Hoopdady为+1,但答案也实际为+1,而不是仅仅说出来。:)@abarnert在等着看这是否真的是答案。。。因为我不知道他们在问什么。:-)我认为函数调用仍然缺失:
map(lambda-ai,aj:ai.function(aj),L)
@chriswesselling:我不确定是否会使用
map()
调用。我更愿意让它成为一个显式循环。@MartijnPieters:我也是,但map很适合作为一个注释。@Hoopdady的+1,但答案的实际+1也不只是说出来。:)@abarnert在等着看这是否真的是答案。。。因为我不知道他们在问什么。:-)我认为函数调用仍然缺失:
map(lambda-ai,aj:ai.function(aj),L)
@chriswesselling:我不确定是否会使用
map()
调用。我宁愿让它成为一个显式循环。@MartijnPieters:我也是,但map很适合注释。