使用元组和值更改列表中的值

时间:2018-09-05 04:04:25

标签: python list loops

我有以下问题:

my_list = [
  [(0.12064145946741212, 0.8105813193990855), 0.007220216606498195],
  [(0.12064145946741212, 0.8040496407576747), 0.007220216606498195]
]

如果它们的负数变为0,则需要更改元组内部的值;如果将0变为0.01,则需要更改元组之外的值。

我该怎么办?我迷路了

1 个答案:

答案 0 :(得分:1)

您可以通过列表理解来做到这一点:

my_list = [
  [(0.12064145946741212, 0.8105813193990855), 0.007220216606498195],
  [(0.12064145946741212, 0.8040496407576747), 0.007220216606498195],
  [(-1, 0.8105813193990855), 0],
  [(0.12064145946741212, -1), 0.007220216606498195],
  [(-1, -1), 2],
  [(-1, -1), 0]]

[[(a[0], a[1]) if a[0]>0 and a[1]>0 else (0, 0) if a[0]<0 and a[1]<0 else (0, a[1]) if a[0]<0 else (a[0], 0)] + [0.01] if c==0 
 else [(a[0], a[1]) if a[0]>0 and a[1]>0 else (0, 0) if a[0]<0 and a[1]<0 else (0, a[1]) if a[0]<0 else (a[0], 0)] + [c] 
 for a, c in my_list]

输出:

[[(0.12064145946741212, 0.8105813193990855), 0.007220216606498195],
 [(0.12064145946741212, 0.8040496407576747), 0.007220216606498195],
 [(0, 0.8105813193990855), 0.01],
 [(0.12064145946741212, 0), 0.007220216606498195],
 [(0, 0), 2],
 [(0, 0), 0.01]]