我有时需要在Python中迭代一个列表,查看"current"元素和"next"元素.到目前为止,我已经完成了以下代码:
for current, next in zip(the_list, the_list[1:]):
# Do something
Run Code Online (Sandbox Code Playgroud)
这有效并且符合我的预期,但是有更多惯用或有效的方法来做同样的事情吗?
我觉得我花了很多时间在Python中编写代码,但没有足够的时间创建Pythonic代码.最近我遇到了一个有趣的小问题,我认为可能有一个简单,惯用的解决方案.解释原文,我需要收集列表中的每个连续对.例如,给定列表[1,2,3,4,5,6],我想计算[(1,2),(3,4),(5,6)].
我想出了一个看起来像翻译Java的快速解决方案.重温这个问题,我能做的最好的就是
l = [1,2,3,4,5,6]
[(l[2*x],l[2*x+1]) for x in range(len(l)/2)]
Run Code Online (Sandbox Code Playgroud)
在长度不均匀的情况下,其具有抛弃最后一个数字的副作用.
是否有一种我不知道的惯用方法,或者这是我最好的方法?
我需要你的帮助,我希望你能指出我正确的方向,所以我得到了一个列表列表(这只是一个例子,列表列表可以有更多的元素),我试图得到成对的元素列表
mylist = [[2, 3, 4], [2, 3]]
#desired output
# newlist = [[2,3], [3,4], [2,3]]
Run Code Online (Sandbox Code Playgroud)
所以在这个问题中它有助于创建一个元组列表,其中每个元组都是一对,所以我使用这个问题的答案来创建这个代码
mylist = [[2, 3, 4], [2, 3]]
coordinates = []
for i in mylist:
coordinates.append(list(map(list, zip(i, i[1:])))) #Instead of list of tuples, I use map to get a list of lists
print(coordinates)
#output [[[2, 3], [3, 4]], [[2, 3]]] #3D list but not exactly what I want
a = [e for sl in coordinates for e in sl] #Use list comprehension …Run Code Online (Sandbox Code Playgroud)