python - 列表到元组组

标签 python list tuples

我有一个类似的列表

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/

相关文章:

c# - 您可以在选择项目之前在 linq 查询中设置属性吗?

python - 如何通过批处理文件测试python脚本是否成功运行

python - Pandas Dataframe 将一列分组,同时将其他列相乘

python - 如何将字符串拆分为 python 中不包含空格的单词?

python - 如何使用列表快速更新大字典?

python - 将字典值转换为不同的列表 - 字典值是元组 - Python

python - 如何将 txt 文件中的元组添加到不带引号的列表中? Python

f# - 如何在 F# 中使用 BlockingCollection<'a>.TryTake

python - 使用 pandas 导入转换后的数据

python - scikit-learn 中岭回归的系数路径