Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.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
N个元素之间的差异大小为N的列表。python_Python_For Loop_Tuples - Fatal编程技术网

N个元素之间的差异大小为N的列表。python

N个元素之间的差异大小为N的列表。python,python,for-loop,tuples,Python,For Loop,Tuples,假设我有N个大小为N的列表,例如,5个大小为3的元组: p = [[9, 9, 9], [17, 14, 18], [14, 15, 17], [14, 15, 17], [14, 15, 15]] 如何查找列表索引之间的差异,例如索引0: 17-9 = 8 14-17 = -3 14-14 = 0 14-14 = 0 那么对于索引1: 14-9 = 5 15-14 = 1 15-15 = 0 15-15 = 0 然后是指数2,3,4 我需要的代码能够做到这一点,动态,所以我可以改变N和N

假设我有N个大小为N的列表,例如,5个大小为3的元组:

p = [[9, 9, 9], [17, 14, 18], [14, 15, 17], [14, 15, 17], [14, 15, 15]]
如何查找列表索引之间的差异,例如索引0:

17-9 = 8
14-17 = -3
14-14 = 0
14-14 = 0
那么对于索引1:

14-9 = 5
15-14 = 1
15-15 = 0
15-15 = 0
然后是指数2,3,4

我需要的代码能够做到这一点,动态,所以我可以改变N和N的意愿

任何帮助都将不胜感激

编辑:

到目前为止,我已经尝试过:

for i in range(10):
    for j, k in product(range(i+1), repeat=2):
        if j!=k:continue
        else:
            print p[i][j]-p[i-1][j]

这段代码适用于大小为2的元组。

非常难看,不是pythonic,容易出错,但仍然有效(至少应该向您展示所需的基本逻辑):

解释

  • 第1行:根据max列表的第一个元素检查子列表的长度

  • 第2行:从索引1开始执行相同的操作(因此可以执行p[1]-p[0],而不必担心越界问题)

  • 第3行:打印所需内容

您可以从这里开始修补

这应该可以做到:

for xyz in zip(*p):
   for curr_idx in xrange(len(xyz)-1):
     print xyz[curr_idx+1]-xyz[curr_idx]

可通过以下方式轻松完成:

试试这个

p = ((9, 9, 9), (17, 14, 18), (14, 15, 17), (14, 15, 17), (14, 15, 15))
index=0
for d in range(1,len(p)):
    print "p["+str(d)+"]["+str(index)+"]-p["+str(d)+"]["+str(index)+"]=",
    print p[d][index]-p[d-1][index]
输出为

p[1][0]-p[1][0]= 8
p[2][0]-p[2][0]= -3
p[3][0]-p[3][0]= 0
p[4][0]-p[4][0]= 0
试试这个:

>>> for x in zip(*p):
    for i in range(len(x)-1):
        print '{0} - {1} = {2}'.format(x[i+1],x[i],x[i+1]-x[i])


17 - 9 = 8
14 - 17 = -3
14 - 14 = 0
14 - 14 = 0
14 - 9 = 5
15 - 14 = 1
15 - 15 = 0
15 - 15 = 0
18 - 9 = 9
17 - 18 = -1
17 - 17 = 0
15 - 17 = -2

这些不是元组。元组是以paren形式出现的,如
(9,9,9)
。了解您尝试了什么以及您在解决方案中寻找的内容会很有帮助(例如,最具python风格的方式、最快、最容易阅读的方式?),您希望的数据格式是什么?还有一张名单吗?
p[1][0]-p[1][0]= 8
p[2][0]-p[2][0]= -3
p[3][0]-p[3][0]= 0
p[4][0]-p[4][0]= 0
>>> for x in zip(*p):
    for i in range(len(x)-1):
        print '{0} - {1} = {2}'.format(x[i+1],x[i],x[i+1]-x[i])


17 - 9 = 8
14 - 17 = -3
14 - 14 = 0
14 - 14 = 0
14 - 9 = 5
15 - 14 = 1
15 - 15 = 0
15 - 15 = 0
18 - 9 = 9
17 - 18 = -1
17 - 17 = 0
15 - 17 = -2