我可以从这些单独的列表中迭代地分割我需要的位置并将它们放入另一个列表“系数”中,如下所示?

Posted

技术标签:

【中文标题】我可以从这些单独的列表中迭代地分割我需要的位置并将它们放入另一个列表“系数”中,如下所示?【英文标题】:Can I iteratively slice the position I need from these separate lists and put them into another list 'coefficient' as shown below? 【发布时间】:2021-06-07 00:36:30 【问题描述】:

我想要做的是遍历每个p 列表的位置并将其放入coefficients 中:coefficients = [1, 2, 5, 8] 暂停(在某种意义上)并使用@987654324 使用这组系数进行计算@。在迭代到每个 p 的下一个位置并为下一次迭代生成:coefficients = [1, 3, 6, 9] 然后继续进行更多迭代。

p1 = [2, 3, 4]
p2 = [5, 6, 7]
p3 = [8, 9, 10]

coefficients = [1, p1[], p2[], p3[]]  # coefficients = [1, p1[0], p2[0], p3[0]] -> next comment
                                      # coefficients = [1,  2   ,     5,     8]
    
roots = np.roots(coefficients)

我想要什么:

p1 = [2, 3, 4]
p2 = [5, 6, 7]
p3 = [8, 9, 10]


#After parsing through the data for the 1st iteration:
coefficients = [1,2,5,8]

#Calculate it with np.roots()
roots = np.roots(coefficients)

然后是下一次迭代:

#After parsing through the data for the 2nd iteration:
coefficients = [1,3,6,9] # coefficients = [1, p1[1], p2[1], p3[1]] -> next comment
                         # coefficients = [1,  3   ,     6,     9]

#Calculate it with np.roots()
roots = np.roots(coefficients)

【问题讨论】:

我想用一个循环来自动化这个,比如 for 循环。 如果您将列表转换为矩阵,您的任务会变得更容易。有这种可能吗? 是的,这是可能的。但是,我是否仍然能够检索我想要的位置,并且只有 3 个系数,如上所示? 【参考方案1】:

所以我将您的问题转换为矩阵并将结果也显示为矩阵。您可以使用此方法并将其扩展到所需的行数和列数。我正在使用矩阵运算。 coefs 是包含您想要的系数列表的矩阵,roots 包含这些系数的根。

import numpy as np
# Let n be number of rows and m be number of columns

n = 3 # or number of lists
m = 3

# Save the data as a matrix
p = [[2, 3, 4],
     [5, 6, 7],
     [8, 9, 10]]

coefs = []
roots = []

for i in range(m):
    coef = [1,]
    for j in range(n):
        coef.append(p[j][i])
    
    # Add to the coefficients matrix and roots matrix
    coefs.append(coef)
    roots.append(np.roots(coef))

# Display results
print("Coefficient list 1", coefs[0])
print("Coefficient list 2", coefs[1])
print("Coefficient list 3", coefs[2])

print("Roots list 1", roots[0])
print("Roots list 2", roots[1])
print("Roots list 3", roots[2])

这就是输出的样子。

【讨论】:

【参考方案2】:

您可以像这样连接您的数据:

coefficients = np.array([[1, 1, 1], p1, p2, p3]).T

不幸的是,np.roots 只接受一个多项式,因此您必须将它们插入一个循环中。

roots = [np.roots(p) for p in coefficients]

【讨论】:

以上是关于我可以从这些单独的列表中迭代地分割我需要的位置并将它们放入另一个列表“系数”中,如下所示?的主要内容,如果未能解决你的问题,请参考以下文章

如何从列表中的项目中删除标点符号并将其另存为列表中的单独项目?

如何迭代地创建要在函数中使用的变量

具有多个掩码的 U-Net 图像分割

在迭代期间将对象添加到现有列表

迭代期间无法获得单独的引用

如何使 jQuery 函数迭代从同一类中的 2 个列表中获取的单独数组?