在python3中使用shuffle函數(shù)要注意的地方
1 shuffle函數(shù)與其他函數(shù)不一樣的地方
shuffle函數(shù)沒有返回值!shuffle函數(shù)沒有返回值!shuffle函數(shù)沒有返回值!僅僅是實(shí)現(xiàn)了對list元素進(jìn)行隨機(jī)排序的一種功能
請看下面的坑
1.1 誤認(rèn)為shuffle函數(shù)會(huì)有一個(gè)返回值的錯(cuò)誤例子
num1 = list(range(1,39526)) #產(chǎn)生1-39525的數(shù) num2 = random.shuffle(num1) num3 = num2[0:30000] #取前30000個(gè)行號的元素 num4 = num2[30000:39524] #取到后面9525個(gè)元素
執(zhí)行結(jié)果:
File "E:/pythonProj/test2/readDatasetCSVfile.py", line 122, in <module> num3 = num2[0:30000] #取前30000個(gè)行號的元素 TypeError: 'NoneType' object is not subscriptable
從這個(gè)錯(cuò)誤中我們也可以看出來,指明obiect沒有類型,其實(shí)現(xiàn)在這個(gè)num2中是null,什么也沒有,因?yàn)閟huffle沒有返回值,所以自然會(huì)報(bào)這種類型的錯(cuò)誤。
1.2 正確使用shuffle函數(shù)的例子
num1 = list(range(1,39526)) #產(chǎn)生1-39525的數(shù) random.shuffle(num1) #注意shuffle沒有返回值,該函數(shù)完成一種功能,就是對list進(jìn)行排序打亂 num3 = num1[0:30000] #取前30000個(gè)行號的元素 num4 = num1[30000:39524] #取到后面9525個(gè)元素
這個(gè)時(shí)候才順利運(yùn)行通過!
補(bǔ)充拓展:對python中使用shuffle和permutation對列表進(jìn)行隨機(jī)洗牌的區(qū)別
函數(shù):shuffle將列表的所有元素隨機(jī)排序,不生成新的數(shù)組返回
示例:
import random
list = [20, 16, 10, 5];
random.shuffle(list) # 參數(shù)只能是列表,元組、字典、字符串會(huì)報(bào)錯(cuò)
print("隨機(jī)排序列表 : ", list)
random.shuffle(list)
print("隨機(jī)排序列表 : ", list)
執(zhí)行結(jié)果:

函數(shù):permutation 返回排列范圍的隨機(jī)列表或返回一個(gè)新的打亂順序的數(shù)組,并不改變原來的數(shù)組,
如果輸入是一個(gè)多維數(shù)組,則它只沿其第一個(gè)索引進(jìn)行無序排列
示例:
import numpy as np
new_arr = np.random.permutation(10)
print(new_arr)
new_arr1 = np.random.permutation([1, 4, 9, 12, 15]) # 參數(shù)為列表
print(new_arr1)
arr = np.arange(9).reshape((3, 3))
new_arr2 = np.random.permutation(arr)
print(new_arr2)
new_arr3 = np.random.permutation([{"a": 1, "b": 2}, [{"e": 5}, {"c": 3}, {"d": 4}], [{"f": 6}, {"g": 8}]])# 子數(shù)組中的排列順序不變
print(new_arr3)
new_arr4 = np.random.permutation((1, 4, 9, 12, 15)) #可以傳元組參數(shù)
print(new_arr4)
import numpy as np
new_arr = np.random.permutation(10)
print(new_arr)
new_arr1 = np.random.permutation([1, 4, 9, 12, 15])
print(new_arr1)
arr = np.arange(9).reshape((3, 3))
new_arr2 = np.random.permutation(arr)
print(new_arr2)
new_arr3 = np.random.permutation([{"a": 1, "b": 2}, [{"e": 5}, {"c": 3}, {"d": 4}], [{"f": 6}, {"g": 8}]]) # 子數(shù)組中的排列順序不變
print(new_arr3)
執(zhí)行結(jié)果:

以上這篇在python3中使用shuffle函數(shù)要注意的地方就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- 詳解Python中打亂列表順序random.shuffle()的使用方法
- Python Pandas 如何shuffle(打亂)數(shù)據(jù)
- python中將兩組數(shù)據(jù)放在一起按照某一固定順序shuffle的實(shí)例
- 在python中以相同順序shuffle兩個(gè)list的方法
- 對python中數(shù)據(jù)集劃分函數(shù)StratifiedShuffleSplit的使用詳解
- 在Python中實(shí)現(xiàn)shuffle給列表洗牌
- Python使用random.shuffle()打亂列表順序的方法
- Python中對數(shù)組集進(jìn)行按行打亂shuffle的方法
相關(guān)文章
Python實(shí)現(xiàn)EM算法實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)EM算法的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10
python人物視頻背景替換實(shí)現(xiàn)虛擬空間穿梭
這篇文章主要為大家介紹了python實(shí)現(xiàn)人物視頻背景替換示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-07-07
python實(shí)現(xiàn)畫出e指數(shù)函數(shù)的圖像
今天小編就為大家分享一篇python實(shí)現(xiàn)畫出e指數(shù)函數(shù)的圖像,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-11-11
如何將Pycharm中Terminal使用Powershell作為終端
這篇文章主要介紹了如何將Pycharm中Terminal使用Powershell作為終端問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05
詳解pycharm連接不上mysql數(shù)據(jù)庫的解決辦法
這篇文章主要介紹了詳解pycharm連接不上mysql數(shù)據(jù)庫的解決辦法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-01-01

