在python3中使用shuffle函數(shù)要注意的地方
1 shuffle函數(shù)與其他函數(shù)不一樣的地方
shuffle函數(shù)沒有返回值!shuffle函數(shù)沒有返回值!shuffle函數(shù)沒有返回值!僅僅是實(shí)現(xiàn)了對(duì)list元素進(jìn)行隨機(jī)排序的一種功能
請(qǐng)看下面的坑
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è)行號(hào)的元素 num4 = num2[30000:39524] #取到后面9525個(gè)元素
執(zhí)行結(jié)果:
File "E:/pythonProj/test2/readDatasetCSVfile.py", line 122, in <module> num3 = num2[0:30000] #取前30000個(gè)行號(hào)的元素 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ù)完成一種功能,就是對(duì)list進(jìn)行排序打亂 num3 = num1[0:30000] #取前30000個(gè)行號(hào)的元素 num4 = num1[30000:39524] #取到后面9525個(gè)元素
這個(gè)時(shí)候才順利運(yùn)行通過!
補(bǔ)充拓展:對(duì)python中使用shuffle和permutation對(duì)列表進(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ù)組,并不改變?cè)瓉淼臄?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的方法
- 對(duì)python中數(shù)據(jù)集劃分函數(shù)StratifiedShuffleSplit的使用詳解
- 在Python中實(shí)現(xiàn)shuffle給列表洗牌
- Python使用random.shuffle()打亂列表順序的方法
- Python中對(duì)數(shù)組集進(jìn)行按行打亂shuffle的方法
相關(guān)文章
淺談Python在pycharm中的調(diào)試(debug)
今天小編就為大家分享一篇淺談Python在pycharm中的調(diào)試(debug),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-11-11在 Python 中解析 ISO 8601 日期的詳細(xì)過程
這篇文章主要介紹了在 Python 中解析 ISO 8601 日期,我們將討論典型的 ISO 8601 日期的結(jié)構(gòu),并向您展示如何將典型的 DateTime 對(duì)象解析為可以在所有地方使用的標(biāo)準(zhǔn)化 DateTime,需要的朋友可以參考下2023-08-08使用Python腳本將Bing的每日?qǐng)D片作為桌面的教程
這篇文章主要介紹了使用Python腳本將Bing的每日?qǐng)D片作為桌面的教程,示例基于Windows操作系統(tǒng)環(huán)境實(shí)現(xiàn),需要的朋友可以參考下2015-05-05