任何人都可以帮助创建给定列表中具有负值的列表吗?
例如:
values = [1, 2, 3]
所需的输出将是
[[-1, 2, 3], [1, -2, 3], [1, 2, -3],[-1, -2, 3], [1, -2, -3], [-1, 2, -3], [-1, -2, -3]]
答案 0 :(得分:2)
生成3次[1, -1]
的乘积,并将结果与输入列表相乘:
from itertools import product
values = [1, 2, 3]
[[num * mul for num, mul in zip(values, combo)]
for combo in product([1, -1], repeat=len(values))]
演示:
>>> from itertools import product
>>> values = [1, 2, 3]
>>> [[num * mul for num, mul in zip(values, combo)] for combo in product([1, -1], repeat=len(values))]
[[1, 2, 3], [1, 2, -3], [1, -2, 3], [1, -2, -3], [-1, 2, 3], [-1, 2, -3], [-1, -2, 3], [-1, -2, -3]]
输出顺序与您指定的略有不同,但会产生相同的值,加上原始列表作为第一个元素。
答案 1 :(得分:0)
另一种方法是做这个而不是有两个列表推导就是喜欢这个
$ dredd sample-blueprint.md http://localhost:3000
info: Beginning Dredd testing...
pass: GET /task/123 duration: 42ms
complete: 1 passing, 0 failing, 0 errors, 0 skipped, 1 total
complete: Tests took 50ms
由于您知道列表索引处的值,因此可以将它们乘以x中的相应索引。然而,这并不像使用两个列表理解那样灵活,比如@ Martijn的答案,它可以更容易地处理变量大小的列表。