1、print()函數(shù):打印字符串;
成都創(chuàng)新互聯(lián)公司主要從事網(wǎng)站設(shè)計(jì)制作、成都做網(wǎng)站、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)禮縣,10余年網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
2、raw_input()函數(shù):從用戶鍵盤捕獲字符;
3、len()函數(shù):計(jì)算字符長度;
4、format()函數(shù):實(shí)現(xiàn)格式化輸出;
5、type()函數(shù):查詢對(duì)象的類型;
6、int()函數(shù)、float()函數(shù)、str()函數(shù)等:類型的轉(zhuǎn)化函數(shù);
7、id()函數(shù):獲取對(duì)象的內(nèi)存地址;
8、help()函數(shù):Python的幫助函數(shù);
9、s.islower()函數(shù):判斷字符小寫;
10、s.sppace()函數(shù):判斷是否為空格;
11、str.replace()函數(shù):替換字符;
12、import()函數(shù):引進(jìn)庫;
13、math.sin()函數(shù):sin()函數(shù);
14、math.pow()函數(shù):計(jì)算次方函數(shù);
15、os.getcwd()函數(shù):獲取當(dāng)前工作目錄;
16、listdir()函數(shù):顯示當(dāng)前目錄下的文件;
17、time.sleep()函數(shù):停止一段時(shí)間;
18、random.randint()函數(shù):產(chǎn)生隨機(jī)數(shù);
19、range()函數(shù):返回一個(gè)列表,打印從1到100;
20、file.read()函數(shù):讀取文件返回字符串;
21、file.readlines()函數(shù):讀取文件返回列表;
22、file.readline()函數(shù):讀取一行文件并返回字符串;
23、split()函數(shù):用什么來間隔字符串;
24、isalnum()函數(shù):判斷是否為有效數(shù)字或字符;
25、isalpha()函數(shù):判斷是否全為字符;
26、isdigit()函數(shù):判斷是否全為數(shù)字;
27、 lower()函數(shù):將數(shù)據(jù)改成小寫;
28、upper()函數(shù):將數(shù)據(jù)改成大寫;
29、startswith(s)函數(shù):判斷字符串是否以s開始的;
30、endwith(s)函數(shù):判斷字符串是否以s結(jié)尾的;
31、file.write()函數(shù):寫入函數(shù);
32、file.writeline()函數(shù):寫入文件;
33、abs()函數(shù):得到某數(shù)的絕對(duì)值;
34、file.sort()函數(shù):對(duì)書數(shù)據(jù)排序;
35、tuple()函數(shù):創(chuàng)建一個(gè)元組;
36、find()函數(shù):查找 返回的是索引;
37、dict()函數(shù):創(chuàng)建字典;
38、clear()函數(shù):清楚字典中的所有項(xiàng);
39、copy()函數(shù):復(fù)制一個(gè)字典,會(huì)修改所有的字典;
40、 get()函數(shù):查詢字典中的元素。
…………
一、如何在列表,字典,集合中根據(jù)條件篩選數(shù)據(jù)?
問題1:
如何過濾掉列表[3,9,-1,10,20,-2]中的負(fù)數(shù)?
解決方法:
在Python中可以使用函數(shù)式編程,列表解析,字典解析集合解析等方式進(jìn)行篩選。
1)最通常的方法:迭代
data = [3,9,-1,10,20,-2]res = []for x in data: if(x = 0): res.append(x)print(res)
2)使用filter函數(shù)
from random import randintdata = [randint(-10,10) for x in range(10)] #在-10到10之間隨機(jī)生成10個(gè)隨機(jī)數(shù)newdata = list(filter(lambda x: x = 0, data))print(newdata)
注意Python3中的filter函數(shù)返回的對(duì)象從列表改為了Iterator(迭代器),因此如果想返回一個(gè)列表,就要加上list()
3)列表解析
newdata2 = [x for x in data if x = 0]print(newdata2)
結(jié)果和使用filter函數(shù)相同,但是使用列表解析所需的時(shí)間要比使用filter快很多,所以首選的方式就是列表解析,另外這兩種方式都遠(yuǎn)快于迭代的方式。(推薦閱讀:Python零基礎(chǔ)入門在線網(wǎng)課)
問題2:
如何篩選出字典中值高于90的項(xiàng)?
解決方法:
from random import randintdic = {x: randint(60,100) for x in range(1,11)} #隨機(jī)生成學(xué)號(hào)1到10的學(xué)生成績newdic = {k:v for k,v in dic.items() if v = 90} #同時(shí)迭代鍵和值,Python3中的iteritems變?yōu)閕temsprint(newdic)
問題3:
如何篩選出集合{77,89,32,29,33}中能被3整除的元素?
解決方法:
s = {77,89,32,29,33}news = {x for x in s if x % 3 == 0}print(news)
二、如何為元組中的每個(gè)元素命名,提高程序的可讀性?
實(shí)際案例:
如學(xué)生信息管理系統(tǒng)中數(shù)據(jù)為固定格式:
(名字,年齡,性別...)
學(xué)生數(shù)量很大,為了減少存儲(chǔ)開銷,對(duì)每個(gè)學(xué)生信息采用元組表示:
(‘jam’,16,’male’)
(‘tom’,18,’male’)
(‘july’,19,’female’)
...
訪問元組時(shí),需要使用索引(index)來訪問,
如一個(gè)學(xué)生元組為student = ('jam',19,'male'),那么想要訪問其名字時(shí)要使用student[0],訪問其性別時(shí)要使用student[2]
由此帶來的問題是大量的索引會(huì)降低程序的可讀性,
那么如何來解決這個(gè)問題呢?
有兩種解決方案:
方案1:定義枚舉類型,也就是定義一系列數(shù)值常量
NAME = 0AGE = 1SEX = 2# NAME,AGE,SEX = range(1,4)student = ('jam',19,'male')print(student[NAME])print(student[AGE])
方案2:使用標(biāo)準(zhǔn)庫中collections.namedtuple替代內(nèi)置的tuple
from collections import namedtupleStudent = namedtuple('student',['name','age','sex']) #相當(dāng)于創(chuàng)建了一個(gè)命名元組類,第一個(gè)參數(shù)是元組的名字,第二個(gè)參數(shù)是其屬性s1 = Student('jam',18,'male') #可以直接傳參s2 = Student(name='tom',age=20,sex='male') #也可以通過關(guān)鍵字傳參print(s1.name) #通過屬性來訪問print(s2.age)
8個(gè)超好用內(nèi)置函數(shù)set(),eval(),sorted(),reversed(),map(),reduce(),filter(),enumerate()
python中有許多內(nèi)置函數(shù),不像print那么廣為人知,但它們卻異常的強(qiáng)大,用好了可以大大提高代碼效率。
這次來梳理下8個(gè)好用的python內(nèi)置函數(shù)
1、set()
當(dāng)需要對(duì)一個(gè)列表進(jìn)行去重操作的時(shí)候,set()函數(shù)就派上用場了。
用于創(chuàng)建一個(gè)集合,集合里的元素是無序且不重復(fù)的。集合對(duì)象創(chuàng)建后,還能使用并集、交集、差集功能。
2、eval()之前有人問如何用python寫一個(gè)四則運(yùn)算器,輸入字符串公式,直接產(chǎn)生結(jié)果。用eval()來做就很簡單:eval(str_expression)作用是將字符串轉(zhuǎn)換成表達(dá)式,并且執(zhí)行。
3、sorted()在處理數(shù)據(jù)過程中,我們經(jīng)常會(huì)用到排序操作,比如將列表、字典、元組里面的元素正/倒排序。這時(shí)候就需要用到sorted() ,它可以對(duì)任何可迭代對(duì)象進(jìn)行排序,并返回列表。對(duì)列表升序操作:
對(duì)元組倒序操作:
使用參數(shù):key,根據(jù)自定義規(guī)則,按字符串長度來排序:
根據(jù)自定義規(guī)則,對(duì)元組構(gòu)成的列表進(jìn)行排序:
4、reversed()如果需要對(duì)序列的元素進(jìn)行反轉(zhuǎn)操作,reversed()函數(shù)能幫到你。reversed()接受一個(gè)序列,將序列里的元素反轉(zhuǎn),并最終返回迭代器。
5、map()做文本處理的時(shí)候,假如要對(duì)序列里的每個(gè)單詞進(jìn)行大寫轉(zhuǎn)化操作。這個(gè)時(shí)候就可以使用map()函數(shù)。
map()會(huì)根據(jù)提供的函數(shù),對(duì)指定的序列做映射,最終返回迭代器。也就是說map()函數(shù)會(huì)把序列里的每一個(gè)元素用指定的方法加工一遍,最終返回給你加工好的序列。舉個(gè)例子,對(duì)列表里的每個(gè)數(shù)字作平方處理:
6、reduce()前面說到對(duì)列表里的每個(gè)數(shù)字作平方處理,用map()函數(shù)。那我想將列表里的每個(gè)元素相乘,該怎么做呢?這時(shí)候用到reduce()函數(shù)。
reduce()會(huì)對(duì)參數(shù)序列中元素進(jìn)行累積。第一、第二個(gè)元素先進(jìn)行函數(shù)操作,生成的結(jié)果再和第三個(gè)元素進(jìn)行函數(shù)操作,以此類推,最終生成所有元素累積運(yùn)算的結(jié)果。再舉個(gè)例子,將字母連接成字符串。
你可能已經(jīng)注意到,reduce()函數(shù)在python3里已經(jīng)不再是內(nèi)置函數(shù),而是遷移到了functools模塊中。這里把reduce()函數(shù)拎出來講,是因?yàn)樗匾恕?/p>
7、filter()一些數(shù)字組成的列表,要把其中偶數(shù)去掉,該怎么做呢?
filter()函數(shù)輕松完成了任務(wù),它用于過濾序列,過濾掉不符合條件的元素,返回一個(gè)迭代器對(duì)象。filter()函數(shù)和map()、reduce()函數(shù)類似,都是將序列里的每個(gè)元素映射到函數(shù),最終返回結(jié)果。我們再試試,如何從許多單詞里挑出包含字母w的單詞。
8、enumerate()這樣一個(gè)場景,同時(shí)打印出序列里每一個(gè)元素和它對(duì)應(yīng)的順序號(hào),我們用enumerate()函數(shù)做做看。
enumerate翻譯過來是枚舉、列舉的意思,所以說enumerate()函數(shù)用于對(duì)序列里的元素進(jìn)行順序標(biāo)注,返回(元素、索引)組成的迭代器。再舉個(gè)例子說明,對(duì)字符串進(jìn)行標(biāo)注,返回每個(gè)字母和其索引。
如果你想獲取 'A' 列的第 0 和第 2 個(gè)元素,你可以這樣做:
這也可以用 .iloc 獲取,通過使用位置索引來選擇內(nèi)容
可以使用 .get_indexer 獲取多個(gè)索引:
警告 :
對(duì)于包含一個(gè)或多個(gè)缺失標(biāo)簽的列表,使用 .loc 或 [] 將不再重新索引,而是使用 .reindex
在以前的版本中,只要索引列表中存在至少一個(gè)有效標(biāo)簽,就可以使用 .loc[list-of-labels]
但是現(xiàn)在,只要索引列表中存在缺失的標(biāo)簽將引發(fā) KeyError 。推薦的替代方法是使用 .reindex() 。
例如
索引列表的標(biāo)簽都存在
先前的版本
但是,現(xiàn)在
索引標(biāo)簽列表中包含不存在的標(biāo)簽,使用 reindex
另外,如果你只想選擇有效的鍵,可以使用下面的方法,同時(shí)保留了數(shù)據(jù)的 dtype
對(duì)于 .reindex() ,如果有重復(fù)的索引將會(huì)引發(fā)異常
通常,您可以將所需的標(biāo)簽與當(dāng)前軸做交集,然后重新索引
但是,如果你的索引結(jié)果包含重復(fù)標(biāo)簽,還是會(huì)引發(fā)異常
使用 sample() 方法可以從 Series 或 DataFrame 中隨機(jī)選擇行或列。
該方法默認(rèn)會(huì)對(duì)行進(jìn)行采樣,并接受一個(gè)特定的行數(shù)、列數(shù),或數(shù)據(jù)子集。
默認(rèn)情況下, sample 每行最多返回一次,但也可以使用 replace 參數(shù)進(jìn)行替換采樣
默認(rèn)情況下,每一行被選中的概率相等,但是如果你想讓每一行有不同的概率,你可以為 sample 函數(shù)的 weights 參數(shù)設(shè)置抽樣權(quán)值
這些權(quán)重可以是一個(gè)列表、一個(gè) NumPy 數(shù)組或一個(gè) Series ,但它們的長度必須與你要抽樣的對(duì)象相同。
缺失的值將被視為權(quán)重為零,并且不允許使用 inf 值。如果權(quán)重之和不等于 1 ,則將所有權(quán)重除以權(quán)重之和,將其重新歸一化。例如
當(dāng)應(yīng)用于 DataFrame 時(shí),您可以通過簡單地將列名作為字符串傳遞給 weights 作為采樣權(quán)重(前提是您要采樣的是行而不是列)。
sample 還允許用戶使用 axis 參數(shù)對(duì)列進(jìn)行抽樣。
最后,我們還可以使用 random_state 參數(shù)為 sample 的隨機(jī)數(shù)生成器設(shè)置一個(gè)種子,它將接受一個(gè)整數(shù)(作為種子)或一個(gè) NumPy RandomState 對(duì)象
當(dāng)為該軸設(shè)置一個(gè)不存在的鍵時(shí), .loc/[] 操作可以執(zhí)行放大
在 Series 的情況下,這實(shí)際上是一個(gè)追加操作
可以通過 .loc 在任一軸上放大 DataFrame
這就像 DataFrame 的 append 操作
由于用 [] 做索引必須處理很多情況(單標(biāo)簽訪問、分片、布爾索引等),所以需要一些開銷來搞清楚你的意圖
如果你只想訪問一個(gè)標(biāo)量值,最快的方法是使用 at 和 iat 方法,這兩個(gè)方法在所有的數(shù)據(jù)結(jié)構(gòu)上都實(shí)現(xiàn)了
與 loc 類似, at 提供了基于標(biāo)簽的標(biāo)量查找,而 iat 提供了基于整數(shù)的查找,與 iloc 類似
同時(shí),你也可以根據(jù)這些索引進(jìn)行設(shè)置值
如果索引標(biāo)簽不存在,會(huì)放大數(shù)據(jù)
另一種常見的操作是使用布爾向量來過濾數(shù)據(jù)。運(yùn)算符包括:
|(or) 、 (and) 、 ~ (not)
這些必須用括號(hào)來分組,因?yàn)槟J(rèn)情況下, Python 會(huì)將 df['A'] 2 df['B'] 3 這樣的表達(dá)式評(píng)估為 df['A'] (2 df['B']) 3 ,而理想的執(zhí)行順序是 (df['A'] 2) (df['B'] 3)
使用一個(gè)布爾向量來索引一個(gè) Series ,其工作原理和 NumPy ndarray 一樣。
您可以使用一個(gè)與 DataFrame 的索引長度相同的布爾向量從 DataFrame 中選擇行
列表推導(dǎo)式和 Series 的 map 函數(shù)可用于產(chǎn)生更復(fù)雜的標(biāo)準(zhǔn)
我們可以使用布爾向量結(jié)合其他索引表達(dá)式,在多個(gè)軸上索引
iloc 支持兩種布爾索引。如果索引器是一個(gè)布爾值 Series ,就會(huì)引發(fā)異常。
例如,在下面的例子中, df.iloc[s.values, 1] 是正確的。但是 df.iloc[s,1] 會(huì)引發(fā) ValueError 。
python的常用內(nèi)置函數(shù)
1.abs() 函數(shù)返回?cái)?shù)字的絕對(duì)值
abs(-40)=40
2. dict() 函數(shù)用于創(chuàng)建一個(gè)字典
dict()
{} ? ? ?#創(chuàng)建一個(gè)空字典類似于u={},字典的存取方式一般為key-value
例如u = {"username":"tom", ?"age":18}
3. help() 函數(shù)用于查看函數(shù)或模塊用途的詳細(xì)說明
help('math')查看math模塊的用處
a=[1,2,3,4]
help(a)查看列表list幫助信息
4.dir()獲得當(dāng)前模塊的屬性列表
dir(help)
['__call__', '__class__', '__delattr__', '__dict__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__module__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__']
5.min() 方法返回給定參數(shù)的最小值 /參數(shù)可以為序列
a=? min(10,20,30,40)
a
10
6. next() 返回迭代器的下一個(gè)項(xiàng)目
it = iter([1, 2, 3, 4, 5])
next(it)
1
next(it)
2
7. id() 函數(shù)用于獲取對(duì)象的內(nèi)存地址
a=12
id(a)
1550569552
8.enumerate() 函數(shù)用于將一個(gè)可遍歷的數(shù)據(jù)對(duì)象(如列表、元組或字符串)組合為一個(gè)索引序列,同時(shí)列出數(shù)據(jù)和數(shù)據(jù)下標(biāo),一般用在 for 循環(huán)當(dāng)中。
a=["tom","marry","leblan"]
list(enumerate(a))
[(0, 'tom'), (1, 'marry'), (2, 'leblan')]
9. oct() 函數(shù)將一個(gè)整數(shù)轉(zhuǎn)換成8進(jìn)制字符串
oct(15)
'0o17'
oct(10)
'0o12'
10. bin() 返回一個(gè)整數(shù) int 或者長整數(shù) long int 的二進(jìn)制表示
bin(10)
'0b1010'
bin(15)
'0b1111'
11.eval() 函數(shù)用來執(zhí)行一個(gè)字符串表達(dá)式,并返回表達(dá)式的值
eval('2+2')
4
12.int() 函數(shù)用于將一個(gè)字符串會(huì)數(shù)字轉(zhuǎn)換為整型
int(3)
3
int(3.6)
3
int(3.9)
3
int(4.0)
4
13.open() 函數(shù)用于打開一個(gè)文件,創(chuàng)建一個(gè)file對(duì)象,相關(guān)的方法才可以調(diào)用它進(jìn)行讀寫
f=open('test.txt')
14.str() 函數(shù)將對(duì)象轉(zhuǎn)化為適于人閱讀的形式
str(3)
'3'
15. bool() 函數(shù)用于將給定參數(shù)轉(zhuǎn)換為布爾類型,如果沒有參數(shù),返回 False
bool()
False
bool(1)
True
bool(10)
True
bool(10.0)
True
16.isinstance() 函數(shù)來判斷一個(gè)對(duì)象是否是一個(gè)已知的類型
a=5
isinstance(a,int)
True
isinstance(a,str)
False
17. sum() 方法對(duì)系列進(jìn)行求和計(jì)算
sum([1,2,3],5)
11
sum([1,2,3])
6
18. super() 函數(shù)用于調(diào)用下一個(gè)父類(超類)并返回該父類實(shí)例的方法。super 是用來解決多重繼承問題的,直接用類名調(diào)用父類方法
class ? User(object):
? def__init__(self):
class Persons(User):
? ? ? ? super(Persons,self).__init__()
19. float() 函數(shù)用于將整數(shù)和字符串轉(zhuǎn)換成浮點(diǎn)數(shù)
float(1)
1.0
float(10)
10.0
20. iter() 函數(shù)用來生成迭代器
a=[1,2,3,4,5,6]
iter(a)
for i in iter(a):
... ? ? ? ? print(i)
...
1
2
3
4
5
6
21.tuple 函數(shù)將列表轉(zhuǎn)換為元組
a=[1,2,3,4,5,6]
tuple(a)
(1, 2, 3, 4, 5, 6)
22.len() 方法返回對(duì)象(字符、列表、元組等)長度或項(xiàng)目個(gè)數(shù)
s = "playbasketball"
len(s)
14
a=[1,2,3,4,5,6]
len(a)
6
23. property() 函數(shù)的作用是在新式類中返回屬性值
class User(object):
?def __init__(self,name):
? ? ? ? ? self.name = name
def get_name(self):
? ? ? ? ? return self.get_name
@property
?def name(self):
? ? ? ? ?return self_name
24.type() 函數(shù)返回對(duì)象的類型
25.list() 方法用于將元組轉(zhuǎn)換為列表
b=(1,2,3,4,5,6)
list(b)
[1, 2, 3, 4, 5, 6]
26.range() 函數(shù)可創(chuàng)建一個(gè)整數(shù)列表,一般用在 for 循環(huán)中
range(10)
range(0, 10)
range(10,20)
range(10, 20)
27. getattr() 函數(shù)用于返回一個(gè)對(duì)象屬性值
class w(object):
... ? ? ? ? ? ? s=5
...
a = w()
getattr(a,'s')
5
28. complex() 函數(shù)用于創(chuàng)建一個(gè)復(fù)數(shù)或者轉(zhuǎn)化一個(gè)字符串或數(shù)為復(fù)數(shù)。如果第一個(gè)參數(shù)為字符串,則不需要指定第二個(gè)參數(shù)
complex(1,2)
(1+2j)
complex(1)
(1+0j)
complex("1")
(1+0j)
29.max() 方法返回給定參數(shù)的最大值,參數(shù)可以為序列
b=(1,2,3,4,5,6)
max(b)
6
30. round() 方法返回浮點(diǎn)數(shù)x的四舍五入值
round(10.56)
11
round(10.45)
10
round(10.45,1)
10.4
round(10.56,1)
10.6
round(10.565,2)
10.56
31. delattr 函數(shù)用于刪除屬性
class Num(object):
...? ? a=1
...? ? b=2
...? ? c=3.
.. print1 = Num()
print('a=',print1.a)
a= 1
print('b=',print1.b)
b= 2
print('c=',print1.c)
c= 3
delattr(Num,'b')
print('b=',print1.b)
Traceback (most recent call last):? File "", line 1, inAttributeError: 'Num' object has no attribute 'b'
32. hash() 用于獲取取一個(gè)對(duì)象(字符串或者數(shù)值等)的哈希值
hash(2)
2
hash("tom")
-1675102375494872622
33. set() 函數(shù)創(chuàng)建一個(gè)無序不重復(fù)元素集,可進(jìn)行關(guān)系測試,刪除重復(fù)數(shù)據(jù),還可以計(jì)算交集、差集、并集等。
a= set("tom")
b = set("marrt")
a,b
({'t', 'm', 'o'}, {'m', 't', 'a', 'r'})
ab#交集
{'t', 'm'}
a|b#并集
{'t', 'm', 'r', 'o', 'a'}
a-b#差集
{'o'}
python的index函數(shù)可以獲取列表中值的第一個(gè)索引。
list= [1,2,3,4,5,1,2,2]
list.index(2) 1
如果要獲取相同值的最后一個(gè)索引:
len(list) - list[::-1].index(2) - 1
反向取得list后,用list的長度減去反轉(zhuǎn)后出現(xiàn)的第一個(gè)索引再減1
文章標(biāo)題:python3函數(shù)索引,Python索引函數(shù)
標(biāo)題網(wǎng)址:http://chinadenli.net/article38/heeosp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、企業(yè)建站、自適應(yīng)網(wǎng)站、網(wǎng)站維護(hù)、網(wǎng)站導(dǎo)航、域名注冊
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)