【发布时间】:2021-02-02 06:01:03
【问题描述】:
我有 2 个从随机库生成的元组列表。
在每个列表本身中,没有重复项。 (使用random.sample())
生成两个列表以使它们成对不同的最简单(最 Pythonic)的方法是什么?
我拥有的当前代码:
list1 = list(zip(random.sample(range(1, 100000), 2000), random.sample(range(1, 8000), 2000)))
list2 = list(zip(random.sample(range(1, 100000), 3000), random.sample(range(1, 8000), 3000)))
例子:
list1 = [(1,1), (2,2), (3,3)]
list2 = [(1,1), (2,3), (1,3)] # Wrong, because (1,1) is already in list 1
list1 = [(1,1), (2,2), (3,3)]
list2 = [(1,2), (2,3), (1,3)] # Correct, as none of the tuples in list 1 is equal to list 2
列表中的元组是行和列。例如:(1,1) 表示第 1 行第 1 列。 所以如果 (1,1) 已经被 list1 占用了,那么它不应该被 list2 占用。
【问题讨论】:
-
是否允许列表在同一行或同一列中有两个元素,只要它们不具有同一行和同一列?
-
例如,
list1是否可以同时包含(1, 1)和(1, 2)? (那么(1, 1)在list1和(1, 2)在list2呢?) -
为什么不把列表加倍然后一分为二呢?
-
@user2357112supportsMonica 是的,这就是我想要的
-
我认为@PatrickParker 的建议是最好的。除了,而不是两倍长,制作一个长度为
(len_1 + len_2)的列表,然后用[:len_1]和[len_1:]切片,分别得到list_1和list_2
标签: python python-3.x