Python列表定義:按特定順序排列的元素組成。在Python中,用方括號(hào)[]來(lái)表示列表,并用逗號(hào)來(lái)分隔其中的元素。Python列表是編程中很常見的數(shù)據(jù)類型 。
列表是一種可修改的集合類型,其元素可以是數(shù)字、string等基本類型,也可以是列表、元組、字典等集合對(duì)象,甚至可以是自定義的類型。其定義方式如下:>>> nums = [1,2,3,4]>>> type(nums)>>> print nums[1, 2, 3, 4]>>> strs = ["hello","world"]>>> print strs['hello', 'world']>>> lst = [1,"hello",False,nums,strs]>>> type(lst)>>> print lst[1, 'hello', False, [1, 2, 3, 4], ['hello', 'world']]
下面我們來(lái)看一下列表中有哪些常見的方法:count():統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù)。index():從列表中找出某個(gè)值第一個(gè)匹配項(xiàng)的索引位置。append():在列表末尾添加新對(duì)象。extend():在列表末尾一次性追加另一個(gè)序列的多個(gè)值。insert():在列表的指定位置插入對(duì)象。pop():移除列表中的一個(gè)元素(默認(rèn)最后一個(gè)元素),并且返回該元素的值。remove():移除列表中某個(gè)值的第一個(gè)匹配項(xiàng)。reverse():將列表中的元素反向,不重新拷貝一個(gè)列表。reversed():將列表中的元素反向,重新拷貝一個(gè)列表。sort():將列表中的元素排序,不重新拷貝一個(gè)列表。sortd():將列表中的元素排序,重新拷貝一個(gè)列表。copy():淺拷貝,只是給原來(lái)的列表貼上了一個(gè)新標(biāo)簽,對(duì)于一個(gè)復(fù)雜對(duì)象的子對(duì)象并不會(huì)完全復(fù)制,如果有子列表,改變?cè)瓉?lái)的值,新的拷貝對(duì)象也會(huì)改變。deepcopy():深拷貝,將復(fù)雜對(duì)象的每一層復(fù)制一個(gè)單獨(dú)的個(gè)體出來(lái)。就是完全拷貝。常見內(nèi)置函數(shù):max()、min()、sum()、len()、all()、any()、zip()、enumerate()
class A:
def __init__(self):
pass
a1=a2=a3=a4=A()
instances_of_A = []
for value in globals().values():
if isinstance(value,A):
instances_of_A.append(value)
#instances_of_A is a list containing all instances of A in global scope.
1、添加元素
添加元素使用列表的內(nèi)置方法append
number = [1, 2, 3, 4]
number.append(5) # number = [1, 2, 3, 4, 5]
number.append([6,7]) # number = [1, 2, 3, 4, 5, [6, 7]]
number.append({'a':'b'}) # number = [1, 2, 3, 4, [6, 7], {'a', :'b'}
可以看到強(qiáng)大的python列表可以嵌套任意類型
2、列表相加
要想連接兩個(gè)列表,可以使用+號(hào)連接
a = [1, 2, 3]
b = [4, 5, 6]
c = a + b # c = [1, 2, 3, 4, 5, 6]
也可以使用列表內(nèi)置方法extend連接兩個(gè)列表
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b) # a = [1, 2, 3, 4, 5, 6]
用+號(hào)會(huì)創(chuàng)建一個(gè)新通對(duì)象,使用extend則在原來(lái)的對(duì)象上面修改
3、列表去重復(fù)
列表本身沒有去除重復(fù)的功能,但是可以借助python的另外一個(gè)類型set(help(set)查看)
a = [1, 2, 3, 3,2, 1]
b = list(set(a)) # b = [1, 2, 3]
也可以借助字典類型的內(nèi)置方法
a = [1, 2, 2, 3, 1, 3]
b = {}.fromkeys(a).keys() # b = [1, 2, 3]
一些常用的方法1. 逆轉(zhuǎn)字符串的三種方法1.1. 模擬C++中方法, 定義一個(gè)空字符串來(lái)實(shí)現(xiàn) 通過(guò)設(shè)置一個(gè)空字符串, 然后講參數(shù)中的字符串從后往前遍歷, 使用字符串的加法合并為新的字符串 復(fù)制代碼 代碼如下:def reverse(text) : str = '' index = len(text) - 1 while index >= 0 : str += text[index] index -= 1 return str1.2. 使用切片法 這個(gè)是Python中的一個(gè)特性, 切片可以取負(fù)值,這是采用切片的方法,設(shè)置步長(zhǎng)為-1,這樣就實(shí)現(xiàn)了反過(guò)來(lái)排序。
復(fù)制代碼 代碼如下:def reverse_1(text) : return text[::-1]1.3. 使用列表 采用列表的reverse方法,先將text轉(zhuǎn)換為列表,然后通過(guò)reverse方法反轉(zhuǎn),然后在通過(guò)join連接為字符串。復(fù)制代碼 代碼如下:def reverse_2(text) : temp = list(text) temp.reverse() return ''.join(temp)2. 使用reduce 使用匿名函數(shù)和reduce() 復(fù)制代碼 代碼如下:def reverse_3(text) : return reduce(lambda x, y : y + x, text) print reverse_3("Hello")3. 遍歷字典的四種方法 復(fù)制代碼 代碼如下:dict={"a":"apple","b":"banana","o":"orange"} print "##########dict######################" for i in dict: print "dict[%s]=" % i,dict[i] print "###########items#####################" for (k,v) in dict.items(): print "dict[%s]=" % k,v print "###########iteritems#################" for k,v in dict.iteritems(): print "dict[%s]=" % k,v print "###########iterkeys,itervalues#######" for k,v in zip(dict.iterkeys(),dict.itervalues()): print "dict[%s]=" % k,v4. 遍歷list的三種方法 復(fù)制代碼 代碼如下:for key in lst : print key for i in range(len(lst)) : print lst[i] for index, key in enumerate(lst) : print key //index是list的索引5. 字典排序的方法 字典按照value的值從大到小的順序來(lái)排序(默認(rèn)從小到排序)。
復(fù)制代碼 代碼如下:dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0} dict= sorted(dic.iteritems(), key=lambda d:d[1], reverse = True) print dict//輸出的結(jié)果:[('aa', 74), ('a', 31), ('bc', 5), ('asd', 4), ('c', 3), ('d', 0)] 下面我們分解下代碼 print dic.iteritems() 得到[(鍵,值)]的列表。然后用sorted方法,通過(guò)key這個(gè)參數(shù),指定排序是按照value,也就是第一個(gè)元素d[1的值來(lái)排序。
reverse = True表示是需要翻轉(zhuǎn)的,默認(rèn)是從小到大,翻轉(zhuǎn)的話,那就是從大到小。對(duì)字典按鍵(key)排序:復(fù)制代碼 代碼如下:dic = {'a':31, 'bc':5, 'c':3, 'asd':4, 'aa':74, 'd':0} dict= sorted(dic.iteritems(), key=lambda d:d[0]) # d[0]表示字典的鍵 print dict#sorted中第三個(gè)可選參數(shù)為reverse, True表示從大到小排序#默認(rèn)reverse = False6. 子類和父類 子類構(gòu)造函數(shù)調(diào)用父類的初始化構(gòu)造函數(shù) 復(fù)制代碼 代碼如下:class A(object) : def __init__(self) : print "testA class B(A) : def __init__(self) : A.__init__(self) 子類調(diào)用父類的同名函數(shù) 復(fù)制代碼 代碼如下:super().fuleifunction()7. 更靈活的參數(shù)傳遞方式 復(fù)制代碼 代碼如下:func2(a=1, b=2, c=3) #默認(rèn)參數(shù) func3(*args) #接受任意數(shù)量的參數(shù), 以tuple的方式傳入 func4(**kargs) #把參數(shù)以鍵值對(duì)字典的形式傳入 在變量前加上星號(hào)前綴(*),調(diào)用時(shí)的參數(shù)會(huì)存儲(chǔ)在一個(gè) tuple()對(duì)象中,賦值給形參。
在函數(shù)內(nèi)部,需要對(duì)參數(shù)進(jìn)行處理時(shí),只要對(duì)這個(gè) tuple 類型的形參(這里是 args)進(jìn)行操作就可以了。因此,函數(shù)在定義時(shí)并不需要指明參數(shù)個(gè)數(shù),就可以處理任意參數(shù)個(gè)數(shù)的情況。
復(fù)制代碼 代碼如下:def calcSum(*args): sum = 0 for i in args: sum += i print sum#調(diào)用:calcSum(1,2,3) calcSum(123,456) calcSum()#輸出:65790################################# def printAll(**kargs): for k in kargs: print k, ':', kargs[k] printAll(a=1, b=2, c=3) printAll(x=4, y=5)#輸出:a : 1 c : 3 b : 2 y : 5 x : 4 python的中參數(shù)可以多種形式進(jìn)行組合, 在混合使用時(shí),首先要注意函數(shù)的寫法,必須遵守:1.帶有默認(rèn)值的形參(arg=)須在無(wú)默認(rèn)值的形參(arg)之后2.元組參數(shù)(*args)須在帶有默認(rèn)值的形參(arg=)之后3.字典參數(shù)(**kargs)須在元組參數(shù)(*args)之后 在函數(shù)被調(diào)用時(shí),參數(shù)的傳遞過(guò)程為:1.按順序把無(wú)指定參數(shù)的實(shí)參賦值給形參2.把指定參數(shù)名稱(arg=v)的實(shí)參賦值給對(duì)應(yīng)的形參3.將多余的無(wú)指定參數(shù)的實(shí)參打包成一個(gè) tuple 傳遞給元組參數(shù)(*args)4.將多余的指定參數(shù)名的實(shí)參打包成一個(gè) dict 傳遞給字典參數(shù)(**kargs)8. lambda 表達(dá)式 lambda 表達(dá)式可以看做一種匿名函數(shù) lambda 表達(dá)式的語(yǔ)法格式: lambda 參數(shù)列表: 表達(dá)式 #參數(shù)列表周圍沒有括號(hào),返回值前沒有 return 關(guān)鍵字,也沒有函數(shù)名稱 復(fù)制代碼 代碼如下:def fn(x): return lambda y: x + y#調(diào)用 a = fn(2) print a(3)#輸出5 分析: fn(2)調(diào)用后, 相當(dāng)于a = lambda y: 2 + y, 然后a(3)被調(diào)用時(shí).相當(dāng)于 print lambda y: 2 + 3。
千鋒武漢Python需要學(xué)習(xí)的技術(shù):第一階段 python語(yǔ)言基礎(chǔ)學(xué)完此階段:掌握python腳本、python界面編程能力掌握數(shù)據(jù)庫(kù)掌握基本爬蟲掌握多線程多進(jìn)程開發(fā)能力第二階段 python web開發(fā)學(xué)完此階段:掌握前端知識(shí)掌握python三大后端框架獨(dú)立開發(fā)網(wǎng)站第三階段 python爬蟲學(xué)完此階段:掌握python爬蟲技術(shù)掌握多線程爬蟲技術(shù)掌握分布式爬蟲技術(shù)第四階段 python數(shù)據(jù)分析學(xué)完此階段:掌握python數(shù)據(jù)分析掌握python數(shù)據(jù)可視化掌握python機(jī)器學(xué)習(xí)。
##注意:最左邊每個(gè)=表示一個(gè)空格
class Student:
====def __init__(self,xh,xm,pshchj,khchj):
========self.xh=xh
========self.xm=xm
========self.pshchj=float(pshchj)
========self.khchj=float(khchj)
========self.jszp()
##====計(jì)算總評(píng)
====def jszp(self):
========self.zp=self.pshchj*0.3+self.khchj*0.7
##====顯示
====def show(self):
========print("姓名:{0},平時(shí)成績(jī):{1:f},考核成績(jī):{2:f}".format(self.xm,round(self.pshchj,1),round(self.khchj,1)))
stus=[]
filename="保存學(xué)生信息.txt"
##輸入所有學(xué)生的信息
i,n=1,int(input("請(qǐng)輸入學(xué)生的數(shù)量:"))
while i<=n:
====stus.append(Student(*(input("請(qǐng)輸入第{0:d}個(gè)學(xué)生的學(xué)號(hào),姓名,平時(shí)成績(jī),考核成績(jī)(空格分割):\n".format(i)).split())))
====i+=1
##顯示所有學(xué)生的信息
print("你輸入的所有學(xué)生的信息:")
for stu in stus:
====stu.show()
====
##按學(xué)生學(xué)號(hào)排序?qū)W生列表
stus.sort(key=lambda stu : stu.xh)
##保存所有學(xué)生的信息到文件
ft="{0:<10}{1:<8}{2:<12f}{3:<12f}{4:f}\n"
stu_info=""
for stu in stus:
====stu_info+=ft.format(stu.xh,stu.xm,stu.pshchj,stu.khchj,stu.zp)
with open(filename,"w") as fo:
====fo.write(stu_info)
主要特點(diǎn)就是需要綁定到一個(gè)對(duì)象上,python解析器會(huì)自動(dòng)把實(shí)例自身傳遞給方法,如14行所示,而直接使用InstanceMethod.f1()調(diào)用方法是不行的。
class InstanceMethod(object):
def __init__(self, a):
self.a = a
def f1(self):
print 'This is {0}.'.format(self)
def f2(self, a):
print 'Value:{0}'.format(a)
if __name__ == '__main__':
# im = InstanceMethod()
im = InstanceMethod('233')
im.f1()
# im.f2()
im.f2(233)
這里介紹幾個(gè)常用的列表操作:
1、添加元素
添加元素使用列表的內(nèi)置方法append
number = [1, 2, 3, 4]
number.append(5) # number = [1, 2, 3, 4, 5]
number.append([6,7]) # number = [1, 2, 3, 4, 5, [6, 7]]
number.append({'a':'b'}) # number = [1, 2, 3, 4, [6, 7], {'a', :'b'}
可以看到強(qiáng)大的python列表可以嵌套任意類型
2、列表相加
要想連接兩個(gè)列表,可以使用+號(hào)連接
a = [1, 2, 3]
b = [4, 5, 6]
c = a + b # c = [1, 2, 3, 4, 5, 6]
也可以使用列表內(nèi)置方法extend連接兩個(gè)列表
a = [1, 2, 3]
b = [4, 5, 6]
a.extend(b) # a = [1, 2, 3, 4, 5, 6]
用+號(hào)會(huì)創(chuàng)建一個(gè)新通對(duì)象,使用extend則在原來(lái)的對(duì)象上面修改
3、列表去重復(fù)
列表本身沒有去除重復(fù)的功能,但是可以借助python的另外一個(gè)類型set(help(set)查看)
a = [1, 2, 3, 3,2, 1]
b = list(set(a)) # b = [1, 2, 3]
也可以借助字典類型的內(nèi)置方法
a = [1, 2, 2, 3, 1, 3]
b = {}.fromkeys(a).keys() # b = [1, 2, 3]
聲明:本網(wǎng)站尊重并保護(hù)知識(shí)產(chǎn)權(quán),根據(jù)《信息網(wǎng)絡(luò)傳播權(quán)保護(hù)條例》,如果我們轉(zhuǎn)載的作品侵犯了您的權(quán)利,請(qǐng)?jiān)谝粋€(gè)月內(nèi)通知我們,我們會(huì)及時(shí)刪除。
蜀ICP備2020033479號(hào)-4 Copyright ? 2016 學(xué)習(xí)鳥. 頁(yè)面生成時(shí)間:2.594秒