Python 从子列表中随机选择以填充空子列表
我有两张名单Python 从子列表中随机选择以填充空子列表,python,list,Python,List,我有两张名单 A=['A'],[],['l'],[] B=[['m','n'],['p'],[],['q','r','s']] 我需要的输出是 c=['a']、['p']、['l']、['s']] 每当a中有一个空的子列表时,我想从B中相应的子列表中附加一个随机选择 我的方法不起作用 随机导入 c=[x+随机。如果len(x)==0且len(y)>=1,则在zip(A,B)中为x,y抽取样本(y,1) 您可以使用来决定要在列表中存储的元素: from random import choice
A=['A'],[],['l'],[]
B=[['m','n'],['p'],[],['q','r','s']]
我需要的输出是
c=['a']、['p']、['l']、['s']]
每当a中有一个空的子列表时,我想从B中相应的子列表中附加一个随机选择
我的方法不起作用
随机导入
c=[x+随机。如果len(x)==0且len(y)>=1,则在zip(A,B)中为x,y抽取样本(y,1)
您可以使用来决定要在列表中存储的元素:
from random import choice
[a if a else [choice(b)] for a, b in zip(A, B)]
您需要像这样使用
if
:
随机导入
A=['A'],[],['l'],[]
B=[['m','n'],['p'],[],['q','r','s']]
C=[
a_sub_list如果a_sub_list else[随机选择(b_sub_list)]对于a_sub_list,b_sub_list在zip中(a,b)
]
印刷品(C)
>>>[a'],[p'],[l'],[q']
您可以使用或
操作符使用随机返回到B
中的随机选择。选择
:
from random import choices
[a or choices(b) for a, b in zip(A, B)]
您的代码只检查
len(x)==0
。如果len(x)!=0
?@DeepSpace使子列表(我的类别)多样化。我需要每个子列表中的一个且仅一个元素。那么,如果len(x)!=0什么也不做。这就是您的错误所在。你不想“什么都不做”。如果len(x)!=0
您想从A
中获取原始列表,因为所有答案都在进行是的,您是对的。我知道我做错了…谢谢@deepspace,但不完全是输出操作wants@DeepSpace为什么差不多?将答案的输出与[[a']、[p']、[l']、[s']
进行比较。尝试[choice(b)]
出于某种原因,我有点喜欢“a或[choice(b)]”而不是“a如果a其他[choice(b)],但我想这是主观的。我会选择choice(b)
,这相当于choices(k)
(因为它有默认值k=1
),但可读性更强