Python 将值从一个列表随机委派到另一个列表



我有两个列表

  a_list = ['a', 'b', 'c']
  b_list = ['1', '2', '3']

在新列表中将列表值从b_list随机委派到大元组的最佳方法是什么:

   c_list = [('a','1'), ('b','3'), ('c','1')]
import random
a_list = ['a', 'b', 'c']
b_list = ['1', '2', '3']
print [(a,random.choice(b_list)) for a in a_list]

输出:

[('a', '3'), ('b', '1'), ('c', '3')]

打乱列表并zip它们将完成您的工作。

import random
a_list = ['a', 'b', 'c']
b_list = ['1', '2', '3']
random.shuffle(a_list)
random.shuffle(b_list)
c_list = zip(a_list, b_list)

或者,如果您不想要一对一映射,那么您也可以使用:

import random
a_list = ['a', 'b', 'c']
b_list = ['1', '2', '3']
c_list = [(i, random.choice(b_list)) for i in a_list]

就像在你的输出中一样,我可以看到重复的值。在下面使用。

不重复:

random.shuffle(b_list)
print zip(a_list, b_list)

重复:

print [ (i,random.choice(b_list)) for i in a_list ]
import random
from functools import partial
a_list = ['a', 'b', 'c']
b_list = ['1', '2', '3']
r= partial(random.choice,b_list)
list(zip(a_list,[r(),r(),r()]))
[('a', '1'), ('b', '2'), ('c', '2')]

最新更新