python中的序列总结:列表,元组,字符串
首先python中的序列有列表,元組,字符串。
列表List是python里面最基本的數據結構。序列中每個元素都是從索引(下標)從0開始,依次疊加。
List操作的方法很多,只能熟悉基本常用的這個方法。
第二個數據結構是元祖,元組其實跟列表差不多,也是存一組數,只不是它一旦創建,便不能再修改,所以又叫只讀列表。
元祖的方法只有count和index。
列表的一些基本操作
0.創建
# list 有兩種創建方式# 第一種 list1 = ["1", "2"]# 第一種方式等同于第二鐘方式,其實也是調用第二種方式創建列表# 第二種list(("1", "2"))# 會自動加載構造函數__init__,內部執行for循環,把元祖轉換為列表,相當于創建一個列表1.切片(獲取多個元素)
poets = ["libai", "dufu", "luyou", "wangwei", "sushi", "qinguan", "qinshaoyou", "liyu", "yanshu"]poets[1:5] # 從下標1開始取,至第5個內(不包括5)1 <= x < 5# ['dufu', 'luyou', 'wangwei', 'sushi']poets[-1] # -1直接獲取最后一個元素# yanshupoets[3:-1] # 如果想取最后一個元素,不能這樣寫,這樣包含-1在內,應該是這樣寫 poets[3:]# ['wangwei', 'sushi', 'qinguan', 'qinshaoyou', 'liyu']poets[::2] # 最后一個參數 相當于步長,每隔元素就取一個# ['libai', 'luyou', 'sushi', 'qinshaoyou', 'yanshu']2.追加(在某尾添加一個元素)
poets.append("dumu") # ['libai', 'dufu', 'luyou', 'wangwei', 'sushi', 'qinguan', 'qinshaoyou', 'liyu', 'yanshu', 'dumu'] # poets = poets.append("dumu") || print(poets.append("dumu")) 該方法沒有返回值,如果這樣操作得到結果為none3.插入
sancao = ["caozhi", "coacao", "caopi"]poets.insert(1, sancao)# ['libai', ['caozhi', 'coacao', 'caopi'], 'dufu', 'luyou', # 'wangwei', 'sushi', 'qinguan', 'qinshaoyou', 'liyu', 'yanshu', 'dumu']# 這個方法需要兩個參數,選擇要插入的位置和要插入的元素 如果只用一個參數,會報錯:insert() takes exactly 2 arguments (1 given)# 第一個參數 只能是數字 不能是字符串 否則會報錯: 'str' object cannot be interpreted as an integer# 第二個參數 可以不填,要填字符串,數字都可以,或者列表等等。。。4.更新
poets[1] = "dufu" # 更新好像沒什么可以說的,就是這樣,選擇對應下標的元素覆蓋,如果括號沒有輸入索引,會報錯語法錯誤 invalid syntax # poets[] = "ceishi" # poets['1'] = "ceishi" # 當然索引只能是整形不能是字符串 list indices must be integers or slices, not str5.移除
poets = ["libai", "dufu", "libai", "luyou"] poets.remove("libai") # ['dufu', 'libai', 'luyou'] # 選擇要移除的元素,不是索引,如果有兩個相同元素,只移除第一個匹配項 # 如果不輸入元素,會報錯 x not in list 或者放空 remove() takes exactly one argument (0 given) poets.pop() # 默認刪除最后一個元素 # ['dufu', 'libai'] poets = ["libai", "dufu", "luyou", "wangwei", "sushi", "qinguan", "qinshaoyou", "liyu", "yanshu"] poets.pop(4) # ['libai', 'dufu', 'luyou', 'wangwei', 'qinguan', 'qinshaoyou', 'liyu', 'yanshu'] sancao = ["caocao", "caozhi", "caopi"] poets.insert(1, sancao) # ['libai', ['caocao', 'caozhi', 'caopi'], 'dufu', 'luyou', 'wangwei', 'qinguan', 'qinshaoyou', 'liyu', 'yanshu'] poets.pop(1) # pop可以刪除嵌套中的列表 # ['libai', 'dufu', 'luyou', 'wangwei', 'qinguan', 'qinshaoyou', 'liyu', 'yanshu'] del poets[0:3] # 刪除列表的元素,此方法可以一次性刪除多個元素,跟切片道理一樣 # ['wangwei', 'qinguan', 'qinshaoyou', 'liyu', 'yanshu']6.擴展(在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表))
aList = ["liubei", "guanyu", "zhangfei"]bList = ["zhaoyun", "machao", "huangzhong"]aList.extend(bList)# ['liubei', 'guanyu', 'zhangfei', 'zhaoyun', 'machao', 'huangzhong']aList.extend("bList") # 如果是字符串,會把字符串分割依次放入列表中# ['liubei', 'guanyu', 'zhangfei', 'b', 'L', 'i', 's', 't']aList.extend(1) # int' object is not iterable7.統計(統計某個元素在列表中出現的次數)
List1 = ["a", "v", "b", "a", "a", " ", "",1]List1.count("") # 統計元素的個數# 3List1.count("") # 如果不填,應該是統計空格 注意" " 和 ""的區別# 1List1.count(1) # 也可以統計整形的個數# 18.獲取下標
List1 = ["a", "v", "b", "a", "a", " ", "", 1]List1.index("a") # 如果有多個相同,至返回第一個元素的下標# 0List1.index("")# 6List1.index("c") # 如果沒找到,如果沒有找到對象則拋出異常9.排序&翻轉(對列表的元素進行反向排序)
List3 = ["lin", "huang", "li", 1, 3, 4]# List3.sort() # python 版本問題 3.0版本 不支持 數字和字符串排序 unorderable types: int() < str()# python 2.0版本支持 數字和字符串排序List3[3] = '1'List3[4] = '3'List3[5] = '4'List3.sort()# ['1', '3', '4', 'huang', 'li', 'lin']List3.reverse()List3# ['lin', 'li', 'huang', '4', '3', '1']10.拷貝
List1 = ['a', 'b', 'c', 2, 3, 4, [8, 9, 4], 'h']List2 = List1.copy() # 復制一份出來List2[0] = 'A' # copy只能完整把列表第一層數據復制一份List2[6][0] = 'k' # 深層里面列表不會完全復制一份,深層列表都指向同一個內存地址。如果深層的數據很大,整個復制不來很占內存List1List2# ['a', 'b', 'c', 2, 3, 4, ['k', 9, 4], 'h']# ['A', 'b', 'c', 2, 3, 4, ['k', 9, 4], 'h']# 如果想實現深層列表完全復制一份,必須調用第三方庫# copy.copy 淺拷貝 只拷貝父對象,不會拷貝對象的內部的子對象。# copy.deepcopy 深拷貝 拷貝對象及其子對象import copy# List3 = List1.deepcopy() # 深copy11.判斷一個列表是否為空
menghuan = ["jianxiage", "xiaoyaosheng", "gujingling", "shentianbing", "longtaizi"]if len(menghuan):print("list have %s element" % len(menghuan))else:print("list is empty")# 由于一個空列表等于false,所以可以簡化len(List)menghuan = []if menghuan:print("not empty")else:print("empty")list1 = ["a", "b", "c", "d", 2, 3, 4, 2, 4, "ds", 23, 23, 12, "qw", "23"]# 元素是否存在于列表中if 2 in list1:num_of_ele = list1.count(2)position_of_ele = list1.index(2)print(" [%s] is in list1, position[%s]" % (num_of_ele, position_of_ele))12.迭代器
# 遍歷列表同時獲取索引i = 0for element in list1:print(element)i += 1# 既要遍歷索引又要遍歷元素時 這樣寫更簡潔些for i, element in enumerate(list1): # enumerate是python的內置函數,在字典上是枚舉、列舉的意思print(i)print(element)元組
元組是用圓括號括起的一組序列。
之前講的列表類型是list,而元組的類型為tuple。
與列表一樣,元組也是序列,唯一的差別在于元組是不能修改的。
-
注意:只包含一個值的元組,必須在這個值后面加上逗號。因為如果不加逗號,那么輸出的不是元組而是這個值本身的類型。用type()就可以證明喲。
>>> (1) # 1后面沒有逗號,即使外殼是括號,它依然是整型數。1>>> (1,) # 1后面加了逗號才可以是元組(1,)>>> type((1))<class 'int'>>>> type((1,))<class 'tuple'>
Python 字符串
字符串是 Python 中最常用的數據類型。我們可以使用引號('或")來創建字符串。
創建字符串很簡單,只要為變量分配一個值即可。例如:
var1 = 'Hello World!' var2 = "Python Runoob"Python訪問字符串中的值
Python不支持單字符類型,單字符在 Python 中也是作為一個字符串使用。
Python訪問子字符串,可以使用方括號來截取字符串,如下實例:
實例(Python 2.0+)
#!/usr/bin/pythonvar1 = 'Hello World!' var2 = "Python Runoob"print "var1[0]: ", var1[0] print "var2[1:5]: ", var2[1:5]以上實例執行結果:
var1[0]: H var2[1:5]: ythoPython字符串更新
你可以對已存在的字符串進行修改,并賦值給另一個變量,如下實例:
實例(Python 2.0+)
#!/usr/bin/python # -*- coding: UTF-8 -*-var1 = 'Hello World!'print "更新字符串 :- ", var1[:6] + 'Runoob!'以上實例執行結果
更新字符串 :- Hello Runoob!Python3 字典
字典是另一種可變容器模型,且可存儲任意類型對象。
字典的每個鍵值(key=>value)對用冒號(:)分割,每個對之間用逗號(,)分割,整個字典包括在花括號({})中 ,格式如下所示:
d = {key1 : value1, key2 : value2 }
鍵必須是唯一的,但值則不必。
值可以取任何數據類型,但鍵必須是不可變的,如字符串,數字或元組。
一個簡單的字典實例:
dict = {‘Alice’: ‘2341’, ‘Beth’: ‘9102’, ‘Cecil’: ‘3258’}
也可如此創建字典:
dict1 = { ‘abc’: 456 };
dict2 = { ‘abc’: 123, 98.6: 37 };
訪問字典里的值
把相應的鍵放入到方括號中,如下實例:
實例
#!/usr/bin/python3
dict = {‘Name’: ‘Runoob’, ‘Age’: 7, ‘Class’: ‘First’}
print ("dict[‘Name’]: ", dict[‘Name’])
print ("dict[‘Age’]: ", dict[‘Age’])
以上實例輸出結果:
dict[‘Name’]: Runoob
dict[‘Age’]: 7
如果用字典里沒有的鍵訪問數據,會輸出錯誤如下:
實例
#!/usr/bin/python3
dict = {‘Name’: ‘Runoob’, ‘Age’: 7, ‘Class’: ‘First’};
print ("dict[‘Alice’]: ", dict[‘Alice’])
以上實例輸出結果:
Traceback (most recent call last):
File “test.py”, line 5, in
print ("dict[‘Alice’]: ", dict[‘Alice’])
KeyError: ‘Alice’
修改字典
向字典添加新內容的方法是增加新的鍵/值對,修改或刪除已有鍵/值對如下實例:
實例
#!/usr/bin/python3
dict = {‘Name’: ‘Runoob’, ‘Age’: 7, ‘Class’: ‘First’}
dict[‘Age’] = 8; # 更新 Age
dict[‘School’] = “菜鳥教程” # 添加信息
print ("dict[‘Age’]: ", dict[‘Age’])
print ("dict[‘School’]: ", dict[‘School’])
以上實例輸出結果:
dict[‘Age’]: 8
dict[‘School’]: 菜鳥教程
刪除字典元素
能刪單一的元素也能清空字典,清空只需一項操作。
顯示刪除一個字典用del命令,如下實例:
實例
#!/usr/bin/python3
dict = {‘Name’: ‘Runoob’, ‘Age’: 7, ‘Class’: ‘First’}
del dict[‘Name’] # 刪除鍵 ‘Name’
dict.clear() # 清空字典
del dict # 刪除字典
print ("dict[‘Age’]: ", dict[‘Age’])
print ("dict[‘School’]: ", dict[‘School’])
但這會引發一個異常,因為用執行 del 操作后字典不再存在:
Traceback (most recent call last):
File “test.py”, line 9, in
print ("dict[‘Age’]: ", dict[‘Age’])
TypeError: ‘type’ object is not subscriptable
注:del() 方法后面也會討論。
字典鍵的特性
字典值可以是任何的 python 對象,既可以是標準的對象,也可以是用戶定義的,但鍵不行。
兩個重要的點需要記住:
1)不允許同一個鍵出現兩次。創建時如果同一個鍵被賦值兩次,后一個值會被記住,如下實例:
實例
#!/usr/bin/python3
dict = {‘Name’: ‘Runoob’, ‘Age’: 7, ‘Name’: ‘小菜鳥’}
print ("dict[‘Name’]: ", dict[‘Name’])
以上實例輸出結果:
dict[‘Name’]: 小菜鳥
2)鍵必須不可變,所以可以用數字,字符串或元組充當,而用列表就不行,如下實例:
實例
#!/usr/bin/python3
dict = {[‘Name’]: ‘Runoob’, ‘Age’: 7}
print ("dict[‘Name’]: ", dict[‘Name’])
以上實例輸出結果:
Traceback (most recent call last):
File “test.py”, line 3, in
dict = {[‘Name’]: ‘Runoob’, ‘Age’: 7}
TypeError: unhashable type: ‘list’
總結
以上是生活随笔為你收集整理的python中的序列总结:列表,元组,字符串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu 16.04修复固件刷新失败
- 下一篇: 爬虫程序,从图片网站或者贴吧爬取图片(含