python - 创建修改列表的列表

标签 python list-comprehension

好吧,我有两个常量,它们是列表的列表,但其中一个与另一个一样,但有一个额外的元素。我想做的是能够以相当干净的方式定义它们,而不必复制内容。因此,为了澄清我有这样的事情:

CONSTANT_ONE = [['val1', 'val2'], ['val3','val4']]
CONSTANT_TWO = [['val1', 'val2', 'extra_stuff'], ['val3','val4','more_extra_stuff']]

如您所见,我复制了 CONSTANT_ONE 中的值。如果我能以相当干净的方式做到这一点,我想避免这种情况。我试过:

CONSTANT_TWO = [l + extra for l in CONSTANT_ONE for extra in ['extra_stuff','more_extra_stuff']]

我觉得很接近,但并没有完全达到我想要的效果,因为它将针对第一个项目中的每个项目迭代 for 循环中的第二个变量。有没有一种干净的方法来做到这一点?任何建议将不胜感激,非常感谢!

最佳答案

一旦修复了类型错误(使用 l + [extra] 而不是 l + extra),列表理解的作用就是创建每个组合,或者两个列表中元素的乘积:

>>> [l + [extra] for l in CONSTANT_ONE for extra in ['extra_stuff','more_extra_stuff']]
[['val1', 'val2', 'extra_stuff'],
 ['val1', 'val2', 'more_extra_stuff'],
 ['val3', 'val4', 'extra_stuff'],
 ['val3', 'val4', 'more_extra_stuff']]

相反,请使用zip将第一个列表中的元素与额外元素组合起来:

>>> [l + [extra] for l, extra in zip(CONSTANT_ONE, ['extra_stuff','more_extra_stuff'])]
[['val1', 'val2', 'extra_stuff'], 
 ['val3', 'val4', 'more_extra_stuff']]

关于python - 创建修改列表的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32081984/

相关文章:

python - 使用 x.unique() 时 Pandas 中变换函数的奇怪行为

python - 如何使用追加对列表中的每个项目进行平方?

python - 在 BeautifulSoup 中查找不同的字符串并返回包含标签

python - 列表中所有对的乘积之和

python - 元组的列表理解为我提供了一个生成器 - 为什么以及如何修改?

python - SECURITY_UNAUTHORIZED_VIEW 未重定向到登录页面

python - 具有 5 个未知参数的最小二乘函数

python - 需要 F 字符串列表理解示例

python - 列表理解和功能

Python 列表理解返回嵌套列表