Создать список логических значений на основе отсечки - PullRequest
0 голосов
/ 05 марта 2020

Я пытаюсь создать список с переменной, которой я могу управлять. Допустим, я хочу создать список длиной 100 с условиями:

[True if x > 0.8 else False for x in [random_number_between_0_and_1]]

Таким образом, список будет иметь значения 2: 8 True / False и так далее. Я пытался что-то вроде этого, но мой синтаксис выключен:

    my_list = []
    True if x > 0.8 else False for x in random()
    my_list.append(i)

Любая помощь приветствуется!

Ответы [ 3 ]

2 голосов
/ 05 марта 2020

Использование random.choices.

my_list = random.choices([True, False], weights=[2, 8], k=100)
1 голос
/ 05 марта 2020

range(100) вернет последовательность из 100 элементов, которые вы можете l oop более. Для каждого из них вызовите rand() и верните результат условия в понимание списка.

my_list = [random() > 0.8 for _ in range(100)]

Нет необходимости использовать True if ... else False, поскольку результат сравнения равен True или * 1008. *.

1 голос
/ 05 марта 2020

Я просто пошел вперед и создал для вас этот короткий модуль:

import random

def main():
    my_list = []
    for _ in range(100):
        # Ternary statement like your example
        x = True if random.random() > 0.8 else False
        my_list.append(x)

    print(my_list)

if __name__ == "__main__":
    # Run main functionality
    main()

Это идет вперед и достигает того, что вы пытались сделать за 100 итераций. Go вперед и измените номер для дальнейших итераций:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...