随机选择两个列表的某些索引以创建两个新列表

WD50

说我有两个清单:

A = ['cat', 'dog', 'cow', 'pig', 'monkey']
B = ['Felix', 'Fido', 'Moo', 'Trump', 'King Kong']

现在,我想通过选择3个随机索引(不替换)来创建lists Alist B,同时保持A的值之间的关系B

例如,

随机选择的索引: 4, 0, 3

因此,

A = ['monkey', 'cat', 'pig']
B = ['King Kong', 'Felix', 'Trump']

有没有一种方法可以在不编写for循环的情况下进行此操作,该循环重复3次以选择随机索引?

阿兰·费

您可以zip选择列表,然后使用选择3个随机对random.sample,最后再次将这些对分成单​​独的列表:

import random

pairs = list(zip(A, B))  # make pairs out of the two lists
pairs = random.sample(pairs, 3)  # pick 3 random pairs
A1, B1 = zip(*pairs)  # separate the pairs

这是逐步发生的事情:

>>> list(zip(A, B))
[('cat', 'Felix'), ('dog', 'Fido'), ('cow', 'Moo'), ('pig', 'Trump'), ('monkey', 'King Kong')]
>>> random.sample(_, 3)
[('monkey', 'King Kong'), ('pig', 'Trump'), ('dog', 'Fido')]
>>> list(zip(*_))
[('monkey', 'pig', 'dog'), ('King Kong', 'Trump', 'Fido')]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章