Python中數(shù)據(jù)結(jié)構(gòu)可以統(tǒng)稱(chēng)為容器馍惹,常見(jiàn)的數(shù)據(jù)結(jié)構(gòu)包括序列(列表和元組等),映射(字典)和集合(Set)玛界。
一 万矾、序列(列表,元組和字符串)
- 列表
內(nèi)容可變——中括號(hào) []
創(chuàng)建列表
list1=['hello','world']
print (list1)
list2=[1,2,3]
print (list2)
list 函數(shù)
可以通過(guò)list函數(shù)對(duì)字符串創(chuàng)建列表
list3=list("hello")
print (list3)
#輸出:['h', 'e', 'l', 'l', 'o']
列表函數(shù)
- append --- 用于在列表末尾追加新的對(duì)象
#Input:
lst=[1,2,3]
lst.append(4)
#Output:
[1,2,3,4]
- count --- 統(tǒng)計(jì)某個(gè)元素在列表中出現(xiàn)的次數(shù)
#Input:
x=[1,2,1,1,2,2,3]
x.count(1)
#Output:
3
- extend --- 在列表的末尾一次性追加另個(gè)序中多值
#Input:
a=[1,2,3]
b=[4,5,6]
a.extend(b)
#Output:
[1,2,3,4,5,6]
- Index --- 用于從列表中找到某個(gè)值第一匹配項(xiàng)的索引位置
lst.index(‘A’)
- insert --- 用于將對(duì)象插入到列表中
#Input:
numbers=[1,2,3,5,6,7]
numbers.insert(3,’four’)
#Output:
[1,2,3,’four’,5,6,7]
- pop --- 移除列表中的一個(gè)元素(默認(rèn)最后)慎框,并返回該值 移除列表中的一個(gè)元素(默認(rèn)最后)良狈,并返回該值 移除列表中的一個(gè)元素(默認(rèn)最后),并返回該值笨枯,pop方法是唯一個(gè)既能修改列表又返回元素之(除了 None)的列表方法
#Input:
x=[1,2,3,5,6,7]
x.pop( )
#Output:
7
- remove --- 用于移出列表中某個(gè)值的第一匹配項(xiàng) (修改列表但無(wú)返回值 )
Input:
x=[‘to’,’be’,’or’,’not’,’to’,’be’]
x.remove(‘be’)
Output:
[‘to’,’or’,’not’,’to’]
- reverse --- 將列表中的元素反向存放
#Input:
x=[1,2,3]
x.reverse()
#Output:
[3,2,1]
- sort --- 用于在原位置對(duì)列表進(jìn)行排序 用于在原位置對(duì)列表進(jìn)行排序
#Input:
x=[4,6,2,1,7,9]
x.sort( )
#Output:
[1,2,4,6,7,9]
- 元組
元組內(nèi)容不可變——小括號(hào)()
創(chuàng)建元組
t1=1,2,3
t2="jeffreyzhao","cnblogs"
t3=(1,2,3,4)
t4=()
t5=(1,)
print (t1,t2,t3,t4,t5)
a. 逗號(hào)分隔一些值薪丁,元組自動(dòng)創(chuàng)建完成;
b. 元組大部分時(shí)候是通過(guò)圓括號(hào)括起來(lái)的馅精;
c. 空元組可以用沒(méi)有包含內(nèi)容的圓括號(hào)來(lái)表示严嗜;
d. 只含一個(gè)值的元組,必須加個(gè)逗號(hào)(,)洲敢;
tuple函數(shù)
tuple函數(shù)和序列的list
函數(shù)幾乎一樣:以一個(gè)序列作為參數(shù)并把它轉(zhuǎn)化為元組漫玄。如果 參數(shù)就算元組,那么該會(huì)原樣返回:
t1=tuple([1,2,3])
t2=tuple("jeff")
t3=tuple((1,2,3))
print (t1)
print (t2)
print (t3)
t4=tuple(123)
print (t45)
#輸出:
(1, 2, 3)
('j', 'e', 'f', 'f')
(1, 2, 3)
TypeError: 'int' object is not iterable
zip函數(shù)
zip函數(shù)接受任意多個(gè)序列作為參數(shù)压彭,返回一個(gè)tuple列表睦优。
zip函數(shù)是內(nèi)置函數(shù),能把迭代對(duì)象進(jìn)行聚合哮塞,返回值是迭代對(duì)象聚合后的元組,可以用list函數(shù)把他轉(zhuǎn)化成列表凳谦。
>>> k=list(zip(*[[1,2,3],[4,5,6]]))
>>> k
[(1, 4), (2, 5), (3, 6)]
- 字符串
內(nèi)容不可變——引號(hào)‘’
創(chuàng)建
str1='Hello world'
print (str1)
print (str1[0])
for c in str1:
print (c)
格式化
字符串格式化使用格式化操作符即百分號(hào) %來(lái)實(shí)現(xiàn)忆畅。
- 通用序列操作
索引
索引從 0(從左向右)開(kāi)始,所有序列可通過(guò)這種方式進(jìn)行索引。神奇的是,索引可以從最后一個(gè)位 置(從右向左)開(kāi)始家凯,編號(hào)是 -1缓醋。
str1='Hello'
nums=[1,2,3,4]
t1=(123,234,345)
print (str1[0])
print (nums[1])
print (t1[2])
輸出:
H
2
345
分片
分片操作用來(lái)訪問(wèn)一定范圍內(nèi)的元素。通過(guò)冒號(hào)相隔兩個(gè)索引實(shí)現(xiàn):[a:b:c] 通常不包括索引為 b的數(shù)據(jù) 绊诲,c為步長(zhǎng)送粱。分片的操作需要提供兩個(gè)索引為邊界,第一元素是包含在內(nèi)掂之,而第二個(gè)則不包含在內(nèi)抗俄。
序列相加
str1='Hello'
str2=' world'
print (str1+str2)
num1=[1,2,3]
num2=[2,3,4]
print (num1+num2)
print (str1+num1)
#輸出:
Hello world
[1, 2, 3, 2, 3, 4]
TypeError: must be str, not list
乘法
只能與數(shù)字相乘,元素個(gè)數(shù)翻倍
print ([None]*10)
str1='Hello'
print (str1*2)
num1=[1,2]
print (num1*2)
print (str1*num1)
#輸出:
[None, None, None, None, None, None, None, None, None, None]
HelloHello
[1, 2, 1, 2]
TypeError: can't multiply sequence by non-int of type 'list'
成員資格
in運(yùn)算符會(huì)用來(lái)檢查一個(gè)對(duì)象是否為某序列(或者其他類(lèi)型) 的成員即元素
str1='Hello'
print ('h' in str1)
print ('H' in str1)
#輸出:
False
True
長(zhǎng)度世舰、最大小值
通過(guò)內(nèi)建函數(shù) len
动雹、max
和 min
可以返回序列中所包含元素的數(shù)量、最大值和最小值跟压。
二胰蝠、映射
鍵類(lèi)型
字典的鍵可以是數(shù)字、符串或者元組 震蒋,鍵必須唯一茸塞。
在 Python中, 數(shù)字查剖、符串和元組都被設(shè)計(jì)成不可變類(lèi)型钾虐,而常見(jiàn)的列表以及集合都是可變的,所以列表和集合不能作為字典鍵 梗搅。字典鍵可以為任何不可變類(lèi)型
A={key:value 禾唁,}
A[key]=value
自動(dòng)添加
即使鍵在字典中并不存,也可以為它分配一個(gè)值這樣就會(huì)建立新的項(xiàng)无切。
成員資格
表達(dá)式 item in d
(d為字典)查找的是鍵(contains key)荡短,而不是值( contains value)。
三哆键、集合
strs=set(['jeff','wong','cnblogs'])
nums=set(range(10))
1.副本是被忽略的掘托,即元素唯一性
2.集合元素的順序是隨意
3.集合常用方法:
A.union(B)
union操作返回兩個(gè)集 合的并,不改變?cè)屑?籍嘹。使用按位與(OR)運(yùn)算符 “|”可 以得到一樣的結(jié)果
其他常見(jiàn)操作包括 &(交集) ,<=,>=,-,copy(),add和remove
4.frozenset
集合是可變的闪盔,所以不能用做字典鍵。本身只包含值也就其他可以使用frozenset類(lèi)型用于代表不可變(散列)的集合類(lèi)型用于代表不可變(散列)的集合Set1.add(frozenset(set2)