【问题标题】:Calculation of items in array by Python用Python计算数组中的项目
【发布时间】:2017-02-25 16:34:11
【问题描述】:

我有一些数据看起来像这种格式

2,3,4 
3,4,5 
5,6,7

我将数组打包为:

with open('house_price_data.txt') as data:
substrings = data.read().split()
array = [map(int, substring.split(',')) for substring in substrings]

我的任务是对集合中的每个数据进行这样的计算:

(2-3)**2 + (3-3)**2 + (5-3)**2
(3-4)**2 + (4-4)**2 + (5-4)**2

我的预期答案是 C1 = 5 和 C2 = 2

我写了这样的代码

for [a for a, b, c in array] in range (0,2):
C1 = (([a for a, b, c in array]) - 3)**2
C2 = (([b for a, b, c in array]) - 4)**2

但它不起作用。出于for循环的目的,我认为它将读取数据2、3、5一一减去3,并将结果一一平方并将总结果相加。那么如何改进呢?

除此之外,我的代码也有问题

[a for a, b, c in array]
[b for a, b, c in array]
[c for a, b, c in array]

我需要在程序中用数组的a、b和c项的代码多次调用数组,当我在程序中有这样的代码时错误消息来了

not enough values to unpack (expected 3, got 0)

如何进行更改?

【问题讨论】:

  • 公式的逻辑是什么?给定样本输入的输出是什么?
  • 不清楚这些减法是从哪里来的,或者您希望如何从列表中减去一个数字...
  • @cricket_007,For循环是为C1调用数据2,3,5,为C2调用数据2,4,5。我的预期答案是 C1 = 5 和 C2 = 2
  • 看起来这是您第一次尝试编写任何 Python 代码,因为您的循环根本没有任何意义,因为这种列表理解和从列表中减去整数。说真的,在这里提问之前请尝试学习一些Python。
  • @ForceBru OP 解决了一个问题,并就与它相关的 SO 提出了三个问题(12 和当前问题)。所以,就像你说的,看起来这确实是他们第一次尝试编写任何 Python 代码

标签: python arrays


【解决方案1】:

这个问题不清楚,可能注定要被遗忘,但如果我理解正确,这远非确定,你正在尝试做这样的事情。

array = [[2, 3, 5], [3, 4, 5], [5, 6, 7]]

#initialize the variables C1 and C2
C1 = 0
C2 = 0

#iterate the elements of the FIRST list in your list
#so 2,3,5 (I assume you have indicated 2,3,4 by mistake)
for element in array[0]:
    C1+=(element-3)**2

#iterate the elements of the SECOND list in your list
#so 3,4,5
for element in array[1]:
    C2+=(element-4)**2

print("C1 =", C1)
print("C2 =", C2)

输出:

C1 = 5
C2 = 2

但是你的例子是模棱两可的。也许 2,3,5 是 每个子列表中的第一个元素 ?在这种情况下,逻辑是一样的。

#iterate the FIRST element in each sublist in your list
for element in array:
    C1+=(element[0]-3)**2

如果这就是您想要做的事情,那么您最好这样做,使用经典循环。列表推导式([x for x in array if ...] 之类的东西)是高级 Python 程序员的捷径。它们做的事情完全相同,但不太清楚,更容易出错。

【讨论】:

    【解决方案2】:

    如果你有array = [[2,3,4],[3,4,5],[5,6,7]],那么你想要a = [2,3,5],那就是

    a = [x[0] for x in array]
    

    否则,array[0][2,3,4],您可以改为这样做

    a, b, c = array 
    

    解压二维数组。


    旁注:您似乎有一个 CSV 文件,所以我强烈建议您使用 Pandas 和 Numpy 进行数值计算

    【讨论】:

    • 当我 print(a) 'map' object is not subscriptable 时它不起作用并出现错误
    • 我的答案没有对象映射,所以这似乎是您对 Python3 理解的另一个问题
    猜你喜欢
    • 1970-01-01
    • 2014-03-18
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 2014-02-18
    • 1970-01-01
    相关资源
    最近更新 更多