日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學(xué)無(wú)先后,達(dá)者為師

網(wǎng)站首頁(yè) 編程語(yǔ)言 正文

python使用Random隨機(jī)生成列表的方法實(shí)例_python

作者:王大興的王興 ? 更新時(shí)間: 2022-06-18 編程語(yǔ)言

引言:

閑來想到冒泡排序中的列表數(shù)據(jù)的排序,就想試試用隨機(jī)數(shù)生成一個(gè)列表來排序試試,于是做了一下實(shí)驗(yàn),本人實(shí)在是屬于入門階段,研究了一下終究還是完成了

1.在python中用random生成一個(gè)列表。

(0,1000)指列表中的數(shù)取值范圍0~1000之間,list列表數(shù)的lenth=10。

import random
list=[random.randint(0,1000)for i in range(10)]
print(list)

輸出結(jié)果如圖:

但是這種方法取值是可以重復(fù)的,

import random
list=[random.randint(0,10)for i in range(10)]
print(list)

2.翻了一些資料找到了取值不重復(fù)的寫法

range(10)是取值范圍,后面的值是lenth長(zhǎng)度

import random
list=random.sample([i for i in range(0,10)],10)
print(list)

輸出如下:

![在這里插入圖片描述](https://img-blog.csdnimg.cn/20210121165739404.png

3.下面用冒泡排序來實(shí)驗(yàn)一下效果

升序的寫法:

import random#導(dǎo)入隨機(jī)數(shù)的包
list=random.sample([i for i in range(0,10)],10)#確定隨機(jī)取值的范圍和列表l的長(zhǎng)度
print(list)
#獲取列表的長(zhǎng)度
n=len(list)
#冒泡排序
#外循環(huán)每次循環(huán)就會(huì)兩兩比較選出最大的數(shù)放在右邊,所以是實(shí)際比較的個(gè)數(shù)是n-1(比如1,2,3)三個(gè)數(shù)比較只會(huì)比較2次,外循環(huán)控制循環(huán)多少趟
for x in range(0,n-1):
    # 內(nèi)循環(huán)控制每趟循環(huán)的次數(shù),每趟循環(huán)就會(huì)兩兩比較選出最大的數(shù)放在右邊,選出的數(shù)(x)不計(jì)入次數(shù),且每次比較都會(huì)(n-1次),所以是長(zhǎng)度n-x-1
    for y in range(0,n-1-x):
        #如果左邊的數(shù)大于右邊的數(shù)就會(huì)交換位置,用到賦值交換
        if list[y]>list[y+1]:
            be=list[y]
            list[y]=list[y+1]
            list[y+1]=be
print(list)

輸出結(jié)果:

下面我換換print輸出的位置我們就可以看見比較的過程

import random
list=random.sample([i for i in range(0,10)],10)
print(list)

n=len(list)

for x in range(0,n-1):
    for y in range(0,n-1-x):
        if list[y]>list[y+1]:
            be=list[y]
            list[y]=list[y+1]
            list[y+1]=be
    print(list)

輸出結(jié)果:

降序的寫法

import random#導(dǎo)入隨機(jī)數(shù)的包
list=random.sample([i for i in range(0,10)],10)#確定隨機(jī)取值的范圍和列表l的長(zhǎng)度
print(list)
#獲取列表的長(zhǎng)度
n=len(list)
#冒泡排序
#外循環(huán)每次循環(huán)就會(huì)兩兩比較選出最大的數(shù)放在右邊,所以是實(shí)際比較的個(gè)數(shù)是n-1(比如1,2,3)三個(gè)數(shù)比較只會(huì)比較2次
for x in range(0,n-1):
    # 內(nèi)循環(huán)控制每趟循環(huán)的次數(shù),每趟循環(huán)就會(huì)兩兩比較選出最大的數(shù)放在右邊,選出的數(shù)(x)不計(jì)入次數(shù),且每次比較都會(huì)(n-1次),所以是長(zhǎng)度n-x-1
    for y in range(0,n-1-x):
        #如果左邊的數(shù)大于右邊的數(shù)就會(huì)交換位置,用到賦值交換
        if list[y]<list[y+1]:
            be=list[y]
            list[y]=list[y+1]
            list[y+1]=be
print(list)

輸出結(jié)果:

附:一行代碼實(shí)現(xiàn)生成一個(gè)隨機(jī)列表

主要用隨機(jī)數(shù)模塊和推導(dǎo)式:

import random
exit([random.randint(1,100) for i in range(10) ])

事實(shí)上,exit是拋出異常然后退出,后面無(wú)法對(duì)列表進(jìn)行操作,正常情況我們還是這樣寫,這樣打印出來的還是會(huì)出現(xiàn)重復(fù)的數(shù):

 import random
 print([random.randint(1,100) for i in range(10) ])

但是python太強(qiáng)大了,有專門的函數(shù)生成這種列表,還不帶重復(fù)的:

import random
print(random.sample(range(1,100),10))

總結(jié)

原文鏈接:https://blog.csdn.net/wang3289696/article/details/112966566

欄目分類
最近更新