玖叶教程网

前端编程开发入门

Python的random模块常用方法技巧

# coding: utf-8
# ********************************************************
# 如何从列表中删除重复项?
# ********************************************************
import random
import copy

# 构造数据
NUMBERS = 10000
list_data = [None] * NUMBERS
for i in range(NUMBERS):
    list_data[i] = random.randint(1, NUMBERS)

list_data_deepcopy = copy.deepcopy(list_data)

# 方法1:如果列表的所有元素都可以用作设置键(即:它们都是 hashable),将列表转换为集合,从而删除重复项,然后返回到列表中。
list_data.sort()

print(len(list_data))  # 10000

sorted_list_data = list(set(list_data))

print(len(sorted_list_data))  # 6341

# 方法2:如果您不介意重新排序列表,请对其进行排序,然后从列表末尾进行扫描,删除重复项:
mylist = list_data_deepcopy

if mylist:
    mylist.sort()
    last = mylist[-1]
    for i in range(len(mylist) - 2, -1, -1):
        if last == mylist[i]:
            del mylist[i]
        else:
            last = mylist[i]

print(len(mylist))  # 6341

# ********************************************************
# 如何从序列中随机获取元素?
# choice(S) 从给定的序列中随机选择一个元素。
# ********************************************************
import random

list1 = ['许银川', '胡荣华', '李来群', '柳大华', '赵国荣', '王天一', '郑惟桐', '杨官璘']
list2 = [None] * 100000
for i in range(100000):
    list2[i] = random.choice(list1)

for i in list(set(list2)):
    print(f"{i} : {list2.count(i)}")
    # or
    # print("{0} : {1}".format(i, list2.count(i)))

# 输出:
# 杨官璘 : 12610
# 赵国荣 : 12578
# 郑惟桐 : 12533
# 胡荣华 : 12446
# 王天一 : 12504
# 许银川 : 12432
# 柳大华 : 12416
# 李来群 : 12481

# ********************************************************
# 如何对列表进行原地重排,也就是说随机打乱?
# ********************************************************
import random

list1 = [i for i in range(10)]
print(list1)  # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
random.shuffle(list1)
print(list1)  # [3, 7, 6, 5, 4, 1, 9, 8, 0, 2]

# ********************************************************
# random随机种子sed()函数
# ********************************************************
# seed() 方法改变随机数生成器的种子,可以在调用其他随机模块函数之前调用此函数。
# 可以看到当seed()没有参数时,每次生成的随机数是不一样的,而当seed()有参数时,
# 每次生成的随机数是一样的,同时选择不同的参数生成的随机数也不一样。
import random

# 随机数不一样
random.seed()
print('随机数1:', random.random())
random.seed()
print('随机数2:', random.random())

# 随机数一样
random.seed(1000)
print('随机数3:', random.random())
random.seed(1000)
print('随机数4:', random.random())
random.seed(2000)
print('随机数5:', random.random())

# 随机数1: 0.1023873279714167
# 随机数2: 0.12720145506924618
# 随机数3: 0.7773566427005639
# 随机数4: 0.7773566427005639
# 随机数5: 0.4484570179105285

发表评论:

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言