是否可以根据特定条件将列表中的布尔值更改为增量值?
我有两个变量:
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
,但是我不知道如何使其递增。
答案 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]
如果您对此有任何疑问,请告诉我。