我有一些元素的列表,例如[1, 2, 3, 4]和单个对象,例如'a'.我想生成一个元组列表,列表中的元素位于第一个位置,单个对象位于第二个位置:[(1, 'a'), (2, 'a'), (3, 'a'), (4, 'a')].

我可以用zip块这样做:

def zip_with_scalar(l, o): # l - the list; o - the object
    return list(zip(l, [o] * len(l)))

然而,这给了我一种创建不必要的重复元素列表的感觉.

另一种可能性是

def zip_with_scalar(l, o):
    return [(i, o) for i in l]

这真的很干净,很像Python ,但我在这里"手动"完成了整个过程.在哈斯凯尔,我会做一些

zipWithScalar l o = zip l $ repeat o

是否有任何内置函数或技巧,无论是用于标量压缩还是用于使我能够使用普通压缩的东西,即某种无限列表?

推荐答案

这是Haskell解决方案中最简单的一个:

import itertools

def zip_with_scalar(l, o):
    return zip(l, itertools.repeat(o))

您还可以使用生成器,避免创建类似理解的列表:

def zip_with_scalar(l, o):
    return ((i, o) for i in l)

Python-3.x相关问答推荐

在numpy. linalg的qr之后使用scipy. integrate中的solve_ivp时出现了一个奇怪的错误

使用数据库将文件从Sharepoint下载到文件系统

如何创建与导航抽屉一起使用的导航栏

为什么 mypy 不适用于 sqlalchemy?

删除给定数组中所有元素为True的所有子数组

如何在两个矩阵的比较中允许任何列的符号差异,Python3?

如何在pyspark的列中按连续1分组并保持具有特定大小的组

将元组列表转换为以整个元组为键的字典列表

Pygame 错误地渲染等距图像

Python rolling_corr 取消后,应该用什么方法来处理

正则表达式:匹配字符串中的分隔符(字母和特殊字符)以形成新的子字符串

为直方图中的每个 bin 绘制不同的 colored颜色 (Matplotlib)

在两个数据框之间查找相等的列

全局捕获快速 api 中的异常

Pylint 给我最后的新行丢失

Python中的依赖倒置

AttributeError:LinearRegression 对象没有属性coef_

如何在 jupyter notebook 5 中逐行分析 python 3.5 代码

为 Python 3 和 PyQt 构建可执行文件

在 Visual Studio Code 中调试 Scrapy 项目