Случайный выбор из подсписка для заполнения пустого подсписка - PullRequest
0 голосов
/ 13 марта 2020

У меня есть два списка списков,

A = [['a'],[],['l'],[]]
B = [['m','n'],['p'],[],['q','r','s']]

Мне нужно, чтобы вывод был

c = [['a'],['p'],['l'],['s']]

Всякий раз, когда в AI есть пустой подсписок, я хочу добавить случайный выбор из соответствующий подсписок от B.

мой подход к этому не работает

import random

c = [x+random.sample(y,1) for x,y in zip(A,B) if len(x)==0 and len(y)>=1]

Ответы [ 3 ]

3 голосов
/ 13 марта 2020

вы можете использовать условное выражение , чтобы решить, какой элемент сохранить в вашем списке:

from random import choice

[a if a else [choice(b)] for a, b in zip(A, B)]
2 голосов
/ 13 марта 2020

Вы можете использовать оператор or, чтобы вернуться к случайному выбору из B, используя random.choices:

from random import choices
[a or choices(b) for a, b in zip(A, B)]
1 голос
/ 13 марта 2020

Вам нужно использовать if, например:

import random

A = [['a'],[],['l'],[]]
B = [['m','n'],['p'],[],['q','r','s']]

C = [
    a_sub_list if a_sub_list else [random.choice(b_sub_list)] for a_sub_list, b_sub_list in zip(A,B)
]
print(C)
>>> [['a'], ['p'], ['l'], ['q']]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...