我正在寻找一种更有效的方法来完成这项功能(没有ZIP请)。希望我能得到一些反馈。我对python很新。但这就是我想要的功能:
遍历一个数字列表,并检查列表中的元素是否有2的差异。对于那些差异为2的元素,将它们附加到列表中
输出应该类似于[[3, 5], [5, 7], [11, 13], [17, 19]]
我的尝试如下:http://goo.gl/qmPkGK或
def test(L):
g = []
#Traverse entire list starting from index 0 with increments of 1
b = L[::1]
print(b)
#Traverse entire list starting from index 1 with increments of 1
c = L[1::1]
print(c)
#For each element in range of my list given below,
for i in range(0,len(L)-1):
#checks if element in c minus element in b == 2
#if yes, append both elements to k and then append that new list to list g
if(abs(c[i]-b[i]) == 2):
k = []
k.append(b[i])
k.append(c[i])
g.append(k)
print(g)
test([2,3,5,7,11,13,17,19,23,29])
我做的是,将原始列表分成2个列表,列表b和列表c。对于 list b ,遍历从索引0 开始的整个列表,增量为1,对于 list c ,遍历从索引开始的整个列表1,增量为1.现在,我减去列表c中的元素和列表b中的元素,并检查它们的差异是否为2.然后,将它们附加到列表k并将其附加到列表g的末尾。我计划在程序中使用某种计数器/指针遍历列表,然后找到列表中数字之间的差异,如果满足2的差异,则追加它们。我试过但我失败了。感谢
答案 0 :(得分:2)
def list_diff_2(lst):
return [(lst[i - 1], lst[i]) for i in range(1,len(lst)) if abs(lst[i] - lst[i-1]) == 2]
这不简单吗?
一般来说,我没有看到任何制作额外列表的理由:通常,原始列表中的一个循环就足够了。