a = [1,1,1,4,4,4,5]
b = [20150602, 20150603, 20150604, 20150605, 20150606, 20150607,20150608]
c = zip(a,b)
output = []
for i in range(0, len(c)-1):
if c[i][0] == c[i+1][0] and c[i+1][1] - c[i][1] <= 3:
output.append(c[i])
print output
此代码使用条件搜索 2 个列表。如果列表 a 中的元素 n == 元素 n+1 和(元素 n+1( - (元素 n(<= 列表 b 中的 3 .....它打印结果。我遇到的问题是它切断了应该打印的 1 个元素。(即此代码将输出
[(1, 20150602), (1, 20150603), (4, 20150605), (4, 20150606)]
但应该输出
[(1, 20150602), (1, 20150603), (1,20150604), (4, 20150605), (4, 20150606), (4, 20150607)])
请参阅输出列表的第二个附加项。 :)
In [14]:
a = [1,1,1,4,4,4,5]
b = [20150602, 20150603, 20150604, 20150605, 20150606, 20150607,20150608]
c = zip(a,b)
output = []
for i in range(0, len(c)-1):
if c[i][0] == c[i+1][0] and c[i+1][1] - c[i][1] <= 3:
output.append(c[i])
output.append(c[i+1])
output = sorted(list(set(output)))
print output
[(1, 20150602), (1, 20150603), (1, 20150604), (4, 20150605), (4, 20150606), (4, 20150607)]
a = [1,1,1,4,4,4,5]
b = [20150602, 20150603, 20150604, 20150605, 20150606, 20150607,20150608]
c = zip(a,b)
output = []
for i in range(0, len(c)-1):
if c[i][0] == c[i+1][0] and c[i+1][1] - c[i][1] <= 3:
output.append(c[i])
elif c[i][0] != c[i+1][0]:
print 'equality failed for numbers: %d and %d' % (c[i][0], c[i+1][0])
elif c[i+1][1] - c[i][1] > 3:
print 'Subtraction is greater than three for: %d and %d' % (c[i][1], c[i+1][1])
print output
输出:
equality failed for numbers: 1 and 4
equality failed for numbers: 4 and 5
[(1, 20150602), (1, 20150603), (4, 20150605), (4, 20150606)]
您缺少两个元素的原因是,当 for 循环中的i
为 2 时,c[i][0]
将返回 1。现在,当执行 if 语句的这一部分时:c[i][0] == c[i+1][0]
它返回 false,因为c[i][0]
返回 1,c[i+1][0]
返回 4,并且它们彼此不相等。当i
等于 5 时也会发生同样的情况。