python - 单行四倍列表
问题描述
我可以用长而丑陋的方式做到这一点:
list_1 = ['AA','BB']
quadrupled = []
for i in list_1:
quadrupled.append(i)
quadrupled.append(i)
quadrupled.append(i)
quadrupled.append(i)
或更短,使用.extend()
:
for i in list_1:
quadrupled.extend([i] * 4)
但我想知道我是否可以使用列表理解来做到这一点。
quadrupled = [([i] * 4) for i in list_1]
给我列表列表,但我想要平面列表。
我知道这种单线的可读性可能不太好,因为它可能需要使用一些嵌套,坚持下去可能会更好,.extend()
但我只是想知道这是否可能。
我已经看到了相同的翻倍,而不是四倍。
解决方案
您可以使用 2 个for
循环通过列表推导来做到这一点:第一个循环遍历输入列表的元素,第二个循环对每个元素追加 4 次。这是一个我觉得非常易读的解决方案:
list_1 = ['AA','BB']
quadrupled = [i for i in list_1 for _ in range(4)]
print(quadrupled)
# ['AA', 'AA', 'AA', 'AA', 'BB', 'BB', 'BB', 'BB']
Another way to do it with a list comprehension is to use zip()
function, but I find it less readable:
quadrupled = [i for j in zip(list_1,list_1,list_1,list_1) for i in j]
推荐阅读
- javascript - 生成指向子目录中相应页面的链接
- sql - 每当用户订购产品列表时,如何添加触发器以更新 tblProduct 的数量
- flutter - Flutter import 'package:adobe_xd/pinned.dart' - URI目标不存在:...(adobe_xd包中缺少lib?)如何解决?
- python - “是”数字比较
- sql - 选择逻辑创建日期不超过的数据
- reactjs - Netlify 找不到 react-bootstrap/Navbar
- hibernate - Spring Data JPA 方法
- laravel - 如何部署 laravel/vue 应用程序
- python - AttributeError:“功能”对象没有属性“predict_proba”
- php - php 7中的递归IIFE(立即调用函数)