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