我正在尝试从1到10的数字列表中出现多次,因此我开始使用以下代码:
list(range(1,11))
但是,它只给出每个数字一次。我需要一个双倍大小的输出,其中一半有任意排序的数字,一半应该在给定的范围内有随机数,如下所示:
[1,2,3,4,5,6,7,8,9,10,3,4,2,7,5,7,5,2,8,9]
我的方法是:
1)制作随机列表
a = random.randint(0,9)
2)结合范围
的输出b = list(range(1,11))
result = a+b
是否有可能以其他方式使用它?
答案 0 :(得分:3)
import random
l = [x for x in range(11)] + [random.randint(0, 10) for x in range(11)]
编辑 如果你希望列表的下半部分只包含上半部分的元素,而是按随机顺序
a = [x for x in range(11)]
b = a[:]
random.shuffle(b)
a.extend(b)
>>> a
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 7, 4, 10, 1, 5, 9, 3, 0, 6, 2, 8]
答案 1 :(得分:2)
错误:
import random
your_array = list(range(1, 11)) + random.sample(range(1, 11), 10)
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 3, 7, 8, 2, 1, 9, 5, 10, 6, 4]
第二次阅读...如果你想在你的第二部分重复,你可以这样做:
your_array = list(range(1, 11)) + [random.randrange(1, 11) for _ in range(10)]
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 5, 4, 8, 1, 5, 1, 10, 5, 2, 10]
答案 2 :(得分:2)
使用内置的random
。
import random
my_list = list(range(1,11))
for i in range(10):
my_list.append(random.randint(0, 10))
print(my_list)
# [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 6, 5, 10, 8, 6, 10, 6, 5, 6, 6]