【发布时间】:2014-11-04 13:25:41
【问题描述】:
我有两个列表:a = [1, 2, 3] 和 b = [4, 5, 6]。
我在python中使用了两个循环从a的每个元素中减去b的每个元素。
import numpy as np
a = [1, 2, 3]
b = [4, 5, 6]
p = -1
result = np.zeros(len(a)*len(a))
for i in range(0,len(a)):
for j in range(0,len(a)):
p = p + 1
result[p] = a[i] - b[j]
我的结果是正确的:result = [-3., -4., -5., -2., -3., -4., -1., -2., -3.]。
但是,我想知道是否有更优雅('pythonic')的方式来做到这一点。
【问题讨论】:
-
你没有提供完整的代码
-
与其让它更“pythonic”,这是一个荒谬的想法,不如让这段代码更容易阅读。首先让变量名更有意义。
-
@Puciek 无法理解您的意思,因为我认为这很清楚。如果不是,请纠正我。
-
@Puciek 因为您肯定比我更专业,请告诉我如何清楚 i,j 变量。非常感谢一个非常初学者的程序员。谢谢。
-
@DimKoim 好吧,问题是 - 他们应该代表什么?名称应该与此相关。因此,如果一个变量包含字母“J”,那么名称“j”就可以了,但如果它包含列表的一部分,那么它应该传达相关元素的名称,在这种情况下,“数字”将是不错的名字。但是命名“i”或“j”的麻烦来自于列表被命名为“a”和“b”的事实,因此我们不知道它们代表什么。阅读中间部分,了解变量重构的示例,以及它的重要性:tinyurl.com/oasu2q2