如何将布尔值列表更改为增量数字

时间:2019-04-28 23:52:46

标签: python

是否可以根据特定条件将列表中的布尔值更改为增量值?

我有两个变量:

answers = [True, True, False, True, True, False, False]
p = 2

这是我的代码:

[x-p if x == False else x+x for x in answers]

这是输出(不正确):

[2, 2, -2, 2, 2, -2, -2]

这是所需的输出:

[1, 2, -2, 4, 5, -2, -2]

我知道为什么以整数形式True == 1会发生这种情况,因此从本质上讲它会看到1+1,但是我不知道如何使其递增。

4 个答案:

答案 0 :(得分:2)

此行为您提供正确的输出:

[i+1 if answers[i] == True else -2 for i in range(len(answers))]

答案 1 :(得分:1)

如何?

answers = [True, True, False, True, True, False, False]
output = [i if answer else -2 for i, answer in enumerate(answers, 1)]
print(output) # [1, 2, -2, 4, 5, -2, -2]

答案 2 :(得分:1)

最短:

[i+1 if x else -2 for i,x in enumerate(answers) ]

答案 3 :(得分:0)

这可能是您想要的。使用给定的变量集

 answers = [True, True, False, True, True, False, False]
 p = 2

 retval = []
 temp = 0

 for item in answers:
     if item:
        item += temp
        retval.append(item)
     else:
        retval.append(item-2)
     temp += 1

# retval is the output list with [1, 2, -2, 4, 5, -2, -2]

如果您对此有任何疑问,请告诉我。