我有一个类似的列表
A = [1,10,50,100,500]
我需要按正确的顺序对 2 个数字进行分组。输出是这样的,
B = [(1,9),(10,49),(50,99),(100,499)]
我已经通过yield
尝试过:
def group(lst, n):
for i in range(0, len(lst), n):
val = lst[i:i+n]
if len(val) == n:
yield tuple(val)
print(list(group([1,10,50,100,500], 2)))
最佳答案
您可以简单地zip
序列本身(没有第一项):
A = [1,10,50,100,500]
def group(lst):
for i, j in zip(A, A[1:]): # pairwise items
yield (i, j-1) # decrement second item by 1
>>> list(group(A))
[(1, 9), (10, 49), (50, 99), (100, 499)]
或者将其用作没有中间函数的列表理解:
>>> [(i, j-1) for i, j in zip(A, A[1:])]
[(1, 9), (10, 49), (50, 99), (100, 499)]
关于python - 列表到元组组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42266819/