Возвращает строковое значение на основе значений в списке в Python - PullRequest
1 голос
/ 19 марта 2019

После генерации случайного списка с 0 и 1 с

decision = [0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0]

Я хочу создать другой список, который возвращает значения «pass» в решении: 1 и «fail», если значения 0

['fail', 'fail', 'pass', 'pass', 'pass', 'fail', 'fail', 'pass',....'fail']

Я пытался использовать списочное понимание,

newlist = ["pass" for k in decision if k == 0] 

но я не мог придумать, как интегрировать другое условие, если k==1.

Пожалуйста, помогите.

Ответы [ 3 ]

3 голосов
/ 19 марта 2019

Используйте условие в части значения понимания "

newlist = ["pass" if k == 1 else "fail" for k in decision]

В качестве альтернативы, если у вас есть дополнительные значения, создайте словарь:

res_dict = {
    0  : "Equal",
    1  : "Higher",
    -1 : "Lower",
}

newlist = [res_dict.get(x) for x in decision]
2 голосов
/ 19 марта 2019

Я знаю, что мой ответ не тот, который вы хотите, но я верю, что будет проще, если вы просто используете True или False. Вот код:

decision = [0, 0, 1, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0]
result = [d == 1 for d in decision] # // So 1 will be True and 0 will be False
0 голосов
/ 19 марта 2019
counter=0
otherlist=[]
for element in mylist:
    if element == 0:
        otherlist[counter]="fail"
    else:
        otherlist[counter]="pass"
    counter += 1

Он не использует понимание, но сработает.Надеюсь это поможет.Еще более быстрый вариант будет:

otherlist = []
for element in mylist:
    if element == 0:
        otherlist.append("fail")
    else:
        otherlist.append("pass")

Вы также можете разрешить 0 для представления False и 1 для представления True

otherlist = []
for element in mylist:
    if element == 0:
        otherlist.append(False)
    else:
        otherlist.append(True)
...