python - 如何做这个清单
问题描述
假设我从列表开始:
list1 = [['a', '1', '2'], ['b', '1'], ['c'], ['d']]
和元组:
b = (1, 2, 3, 4)
现在我想得到一个像这样的列表:
c = [['a', '1', '2'], ['b', '1', '1'], ['b', '1', '2'], ['b', '1', '3'], ['b', '1', '4'], ['c'], ['d']]
所以每个部分都b
扩展了旧嵌套列表的新副本b
。
所以基本上我想要的是这样的:
c = [i + [j] for j in b if "b" in i else i for i in a] (1)
可悲的是,这不起作用。
所以我尝试了:
c = [[i + [j] for j in b] if "b" in i else i for i in a]
这给了我:
[['a', '1', '2'], [['b', '1', 1], ['b', '1', 2], ['b', '1', 3], ['b', '1', 4]], ['c'], ['d']]
然后我试图再次拆分它,但我没有管理它。
我最好的尝试是:
[i[x] if type(i[0]) is list else i for i in c for x in range(len(i))]
有没有办法让(1)正常工作或让我得到我想要的结果的列表?我有点卡住了。可能这很容易,但我看不到方法。
解决方案
我会避免对这种复杂的东西进行列表推导:
list1 = [['a', '1', '2'], ['b', '1'], ['c'], ['d']]
b = (1, 2, 3, 4)
new_list = []
for i in list1:
if 'b' in i:
extended = [i + [str(j)] for j in b]
new_list += extended
else:
new_list.append(i)
推荐阅读
- kubernetes - 将连接命令保存在 kubeadm init 生成的服务器内存中
- javascript - 如果javascript中发生“else”语句,如何在2秒后重新加载页面
- arrays - 如何在从 pdf 获得的字节数组中挑选出一个对象?
- java - 在 JPQL @Query 注释查询中使用 @Param 作为对象以获取多个参数
- php - Telegram Bot 无法解禁用户
- python - 计算值在滚动窗口内满足条件的次数
- android - 显示自定义插页式广告,如 admob 插页式广告
- opengl - 哪种图像格式加载到内存所需的时间更短
- mongodb - 如何在 MongoDB 中按数据范围对订单进行分组?
- javascript - 无法通过 React 中的测试用例说模拟函数 onClick()