python基礎(chǔ)-列表 元組 集合 字典區(qū)別和用法

1 python數(shù)據(jù)類型

Python中有六個標(biāo)準(zhǔn)的數(shù)據(jù)類型:Number(數(shù)字)狡相,String(字符串)呀癣,List(列表),Tuple(元組)输莺,Set(集合)戚哎,Dictionary(字典)。其中:Number(數(shù)字)嫂用、String(字符串)型凳、Tuple(元組)是不可變數(shù)據(jù),其余三種是可變數(shù)據(jù)嘱函。

轉(zhuǎn)義字符

\n 表示換行
\t 表示制表符
\ 表示\

#轉(zhuǎn)義字符
print ('It\'s a dog!')
print ("hello world!\nhello Python!")#換行
print ('\\\t\\')
print (r'\\\t\\')#使用在引號前加r甘畅,原樣輸出引號內(nèi)字符串

輸出結(jié)果

It's a dog!
hello world!
hello Python!
\    \
\\\t\\

布爾值
布爾值是一個邏輯值,只有真(True)和假(False)

e = True
f = False
print(type(e))
print(type(f))
s = 'Python'
print( 'Py' in s)
print( 'py' in s)

輸出結(jié)果

<class 'bool'>
<class 'bool'>
True
False

2 python數(shù)據(jù)結(jié)構(gòu)

Python數(shù)據(jù)結(jié)構(gòu)包括列表(list)往弓、元組(tuple)疏唾、集合(set)、字典(dict)等函似,這里主要講解列表槐脏,列表有兩個特點:

  1. 序列中的所有元素都是有自己的編號的——從0開始遞增
  2. 列表是用來存儲一連串元素的容器缴淋,用中括號[]來表示准给,列表中元素的類型可不相同。
list = [0, 1, 2, 3, 4, 5]
print (list)

########索引
## 注意:索引從0開始重抖,含左不含右
print ('[4]=',list[4])
print ('[-4]=',list[-4])
print ('[0:4]=',list[0:4])
print ('[:4]=',list[:4])#dddd
print( '[4:]=',list[4:])
print ('[0:4:2]=',list[0:4:2])
print ('[-5:-1:]=',list[-5:-1:])
print ('[-2::-1]=',list[-2::-1])

輸出結(jié)果

[0, 1, 2, 3, 4, 5]
[4]= 4
[-4]= 2
[0:4]= [0, 1, 2, 3]
[:4]= [0, 1, 2, 3]
[4:]= [4, 5]
[0:4:2]= [0, 2]
[-5:-1:]= [1, 2, 3, 4]
[-2::-1]= [4, 3, 2, 1, 0]

修改表中元素

list[3] = "True"
print (list[3])
list[5]="HELLO"
print (list[5])
list[5]=2021
print (list[5])
print (list)

輸出結(jié)果

True
HELLO
2021
[0, 1, 2, 'True', 4, 2021]

列表中插入元素

#注意重復(fù)運行可在原結(jié)果上再次執(zhí)行命令
list.append('NAME') # 添加到尾部
list.extend(['WAN', 'LI'])#尾部 extend也是添加在尾部
print (list)
age = [90, 80, 75, 66]
list.insert(1, age) # 將[90, 80, 75, 66]添加到第一個元素0后面
list

輸出結(jié)果

[0, 1, 2, 'True', 4, 2021, 'NAME', 'WAN', 'LI']
[0, [90, 80, 75, 66], 1, 2, 'True', 4, 2021, 'NAME', 'WAN', 'LI']

輸出列表中的元素

print (list.pop(1)) # 該函數(shù)返回被彈出的元素露氮,不傳入?yún)?shù)則默認(rèn)刪除最后一個元素。注意讀取順序0開始
print (list)

輸出結(jié)果

[90, 80, 75, 66]
[0, 1, 2, 'True', 4, 2021, 'NAME', 'WAN', 'LI']

元素是否在列表元素中及統(tǒng)計個數(shù)

print( 'WAN' in list)
print ('WU' not in list)
list.count('WAN')
list

輸出結(jié)果

True
True
1

查找某個元素在列表中的位置

##注意修改后列表中元素變動
print(list)
list.index('LI')

輸出結(jié)果

[0, 1, 2, 'True', 4, 2021, 'NAME', 'WAN', 'LI']
8

3 Python控制流

  1. python中有三種控制流類型:順序結(jié)構(gòu)钟沛、分支結(jié)構(gòu)畔规、循環(huán)結(jié)構(gòu)。
  2. 在python中通常情況下程序按從上往下的順序執(zhí)行語句恨统,而某些時候我們?yōu)榱烁淖兂绦虻膱?zhí)行順序叁扫,使用控制流語句控制程序執(zhí)行方式。
  3. python分隔語句一般用換行來分隔畜埋,語塊使用Tab鍵(即空格)縮進(jìn)而不用大括號莫绣。

順序結(jié)構(gòu)

#按順序運算
s = '7'
num = int(s) # 一般不使用這種分隔方式
num -= 1 # num = num - 1
num *= 6 # num = num * 6
print (num)

輸出結(jié)果

6

if 條件 1

#分支結(jié)構(gòu)
#Python中if語句是用來判斷選擇執(zhí)行哪個語句塊的
##條件判斷1
a = 1
b = 1.0
if a == b: ###一個等號表示賦值,兩個表示判斷
    print("you are right!")
else:
    print("you are wrong!")

輸出結(jié)果

you are right

if 條件 2

#條件判斷2(可以多個判斷條件elif)
#多個分支
a = 1
if a == 1:  
    print("a = 1")
elif a == 2:
    print("a = 2")
else:
    print("other") #輸出a=1 悠鞍,如果a不等于那幾個就輸出other

輸出結(jié)果

a = 1

循環(huán)結(jié)構(gòu)

#for 循環(huán) for (條件變量) in (集合):
#其中“集合”并不單指set对室,而是“形似”集合的列表、元組、字典掩宜、數(shù)組都可以進(jìn)行循環(huán)

names = ["san","si","mazi"]
for name in names:
    print(name)

輸出結(jié)果

san
si
mazi

循環(huán)語句求和

total = 0
for i in range(1, 101):
    total += i #total=total+i
print (total)

輸出結(jié)果

5050

4 列表 元組 集合 字典區(qū)別和用法

區(qū)別

4.1 列表

可重復(fù)蔫骂,類型可不同。類型不同也是跟數(shù)組最本質(zhì)的區(qū)別牺汤。python里的列表用“[]”表示: 

列表常用函數(shù)

names = ["4ZhangYang", "#!Guyun","xXiangPeng","jack","ChenRonghua","XuLiangchen"]

print(names[0])           #  取下標(biāo)0的值
print(names[-1]) #取最后一個值
print(names[-2:])         #  倒數(shù)第二個取到結(jié)尾
print(names[1:3])   #取的是下標(biāo)1和2 的值辽旋,取左不取右
print(names[0:-1])         #  從下標(biāo)0取到倒數(shù)第二個
print(names[0:])           #  等價print(names[:])   所有
print(names[0:3])         #  等價print(names[:3])  開始0取到第三個
print(names[0:-1:2]) #   0到-1之間,每隔一個元素檐迟,就取一個
print(names[::2])          #  后面的2是表明补胚,每隔一個元素,就取一個

對比a和b的結(jié)果

a = [1,2,3]
b = a
a[1] = 555 #下標(biāo)1是555
b = [1,555,3]
print("list_a = ",a) #lst是用中括號
print("list_b = ",b)

import copy
#names = "ZhangYang Guyun Xiangpeng XuLiangChen"
names = ["4ZhangYang", "#!Guyun","xXiangPeng",["alex","jack"],"ChenRonghua","XuLiangchen"] #可以列表套列表
name2 = copy.deepcopy(names)   # 深度copy锅减,徹底的把names 復(fù)制給name2,修改names對name2無影響糖儡。
#name2 = names.copy()          # 淺淺copy,只copy第一層怔匣,修改names 的第二層元素值握联,會影響name2 的第二層的值
#name2 = names                 # 直接復(fù)制,修改names每瞒,就會影響name2金闽,指向的同一塊地址。
print(names)
print(name2)
names[2] = "向鵬"
names[3][0] ="ALEXANDER"        # 下標(biāo)3 也是一個list剿骨,取下標(biāo)3的第0個下標(biāo)
print(names)
print(name2)

列表的 --- 增 -- 刪 -- 改 -- 查

# 列表的 ---  增 -- 刪 -- 改 -- 查
names = ["4ZhangYang", "#!Guyun","xXiangPeng",["alex","jack"],"ChenRonghua","XuLiangchen"]
names.append("LeiHaidong") #在最后面添加
names.insert(1,"ChenRonghua") #在下標(biāo)1后面插入
names[2] ="XieDi" #修改下標(biāo)2的值

#delete
names.remove("ChenRonghua") #如果存在多個重復(fù)代芜,只刪除第一個重復(fù)值
del names[1]                             # 等價 names.pop(1) 刪除下標(biāo)1的值
del names                                #刪除names, 就是不存在了浓利,若是在使用print(names)打印就會報錯
print(names)
print(names.index("XieDi")) #顯示XieDi的下標(biāo)索引
print(   names[names.index("XieDi")]   )#顯示顯示XieDi的下標(biāo)索引的值XieDi

print(names.count("ChenRonghua")) #計數(shù)個數(shù)
names.clear()                            # 清空names里面的元素挤庇,注意區(qū)別和del names 的區(qū)別,但列表仍然存在
names.reverse() #反向列表中元素。

a=[1,23]
#list.sort(cmp=None, key=None, reverse=False) 默認(rèn)是false升序
a.sort() #sort進(jìn)行排序必須是整數(shù)才可以贷掖,要不然會報錯嫡秕。
a

names2 = [1,2,3,4]
#list.extend(seq) seq是元素列表,在列表末尾一次性追加另一個序列中的多個值(用新列表擴展原來的列表).
names.extend(names2)
names

循環(huán)輸出列表內(nèi)容苹威,在結(jié)尾添加指定的內(nèi)容

#循環(huán)輸出列表內(nèi)容昆咽,在結(jié)尾添加指定的內(nèi)容
names2 = [1,2,3,4]
for x in names2:
 print(x,"\n")
print("\n")
for x in [1, 2, 3]:
 print(x, end="1")  #  輸出的內(nèi)容結(jié)尾添加1

4.2 字符串

字符串是 Python 中最常用的數(shù)據(jù)類型。我們可以使用引號('或")來創(chuàng)建字符串牙甫。

name = "WOSHISHUI"
name.capitalize()           # 首字母大寫,其它字母所有變小寫
name.casefold()             # 大寫所有變小寫
name.center(20,"-")         # 輸出 '-----WOSHISHUI------'掷酗,將字符串放在中間
name.count('SHI')           # 統(tǒng)計 SHI出現(xiàn)次數(shù)
name.encode()               # 將字符串編碼成bytes格式
name.endswith("Li")         # 判斷字符串是否以 Li結(jié)尾,返回布爾值
print("woshi\tshui".expandtabs(10))     # 輸出'woshi      shui'窟哺, 將\t轉(zhuǎn)換成多長的空格
print(name.find('A'))                   # 查找A,找到返回其索引泻轰, 找不到返回-1

4.3 元組

元組與列表相似,不一樣之處在于元組的元素不能修改且轨。
元組使用小括號糕殉,列表使用方括號亩鬼。
元組建立很簡單殖告,只須要在括號中添加元素阿蝶,并使用逗號隔開便可。

tup1 = ("Google", "Runoob", 1997, 2000)
tup2 = (1, 2, 3, 4, 5, 6, 7)
print("tup1[0]: ", tup1[0])
print("tup2[1:5]: ", tup2[1:5])

# 如下修改元組元素操做是非法的黄绩。
#tup1[0] = 100
# 報錯:TypeError: 'tuple' object does not support item assignment


# 建立一個新的元組
tup3 = tup1 + tup2;
print(tup3)
print(len(tup3))    # 輸出元組元素個數(shù)

#刪除元組 - 不能刪除指定的下標(biāo)羡洁,只能整個刪除
del tup1

#------- 元素函數(shù) -----------------
tuple1 = ('Google', 'Runoob', 'Taobao')        # 計算元組元素個數(shù)。
print(len(tuple1))

tuple1 = ('5', '4', '9')                        # 返回元組中元素最大值爽丹。
print(max(tuple1))

tuple1 = ('5', '4', '9')                        # 返回元組中元素最小值筑煮。
print(min(tuple1))

list1= ['Google', 'Taobao', 'Runoob', 'Baidu']  # 將列表轉(zhuǎn)換為元組。
tuple1=tuple(list1)
print(tuple1)

4.4 字典

字典是另外一種可變?nèi)萜髂P驮列铱纱鎯θ我忸愋蛯ο蟆?br> 字典的每一個鍵值(key=>value)對用冒號(:)分割真仲,每一個對之間用逗號(,)分割,整個字典包括在花括號({})中 ,格式以下所示:
d = {key1 : value1, key2 : value2 }

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print("dict['Name']: ", dict['Name']) #就是直接取值
print("dict['Age']: ", dict['Age'])

#------ 修改字典元素
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
dict['Name'] = "test"  # 添加信息
dict['Age'] = 8  # 更新 Age

print("dict['Name']: ", dict['Name'])
print("dict['Age']: ", dict['Age'])


# ----- 刪除字典元素
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

del dict['Name']  # 刪除鍵 'Name'
print(dict)

dict.clear()  # 清空字典
print(dict)
del dict  # 刪除字典
print(dict["Name"]) #會報錯初澎,因為已經(jīng)刪除

字典函數(shù)

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print(len(dict))   #計算字典元素個數(shù)秸应,即鍵的總數(shù)。
print(str(dict))   #輸出字典碑宴,以可打印的字符串表示软啼。
print(dict) #和上述str(dict)一樣
type(dict)  #返回輸入的變量類型,若是變量是字典就返回字典類型延柠。


1 radiansdict.clear()
刪除字典內(nèi)全部元素
2  radiansdict.copy()
返回一個字典的淺復(fù)制
3  radiansdict.fromkeys()
建立一個新字典祸挪,以序列seq中元素作字典的鍵,val為字典全部鍵對應(yīng)的初始值
4  radiansdict.get(key, default=None)
返回指定鍵的值贞间,若是值不在字典中返回default值
5  key in dict
若是鍵在字典dict里返回true贿条,不然返回false
6  radiansdict.items()
以列表返回可遍歷的(鍵, 值) 元組數(shù)組
7  radiansdict.keys()
返回一個迭代器,可使用 list() 來轉(zhuǎn)換為列表
8  radiansdict.setdefault(key, default=None)
和get()相似, 但若是鍵不存在于字典中增热,將會添加鍵并將值設(shè)為default
9  radiansdict.update(dict2)
把字典dict2的鍵/值對更新到dict里
10 radiansdict.values()
返回一個迭代器整以,可使用 list() 來轉(zhuǎn)換為列表
11 pop(key[,default])
刪除字典給定鍵 key 所對應(yīng)的值,返回值為被刪除的值钓葫。key值必須給出悄蕾。 不然,返回default值础浮。
12 popitem()
隨機返回并刪除字典中的最后一對鍵和值帆调。

4.5 集合

集合(set)是一個無序的不重復(fù)元素序列。
可使用大括號 { } 或者 set() 函數(shù)建立集合豆同,注意:建立一個空集合必須用 set() 而不是 { }番刊,由于 { } 是用來建立一個空字典。
它的主要做用以下: 1.去重影锈,把一個列表變成集合芹务,就自動去重了蝉绷。2.關(guān)系測試,測試兩組數(shù)據(jù)以前的交集枣抱、差集熔吗、并集等關(guān)系。

basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket)  ##這里演示的是去重功能,只會輸出沒有重復(fù)的元素
print("orange" in basket) # 判斷元素是否在集合內(nèi) 返回true 佳晶、 false


#s = set([3,5,9,10])  # 建立一個數(shù)值集合
#s = set((3,5,9,10))  # 建立一個數(shù)值集合
s = set({3,5,9,10})  # 建立一個數(shù)值集合 用()桅狠,[],{}建立集合都可以
print(s)
type(s)


t = set("Hello")  # 建立一個唯一字符的集合
print(t) #這里就會去重,剩下一個l
print(type(t))

t=set(['HELLO','12',1])  #如果是這樣就會把hello當(dāng)成一個元素來看
t

關(guān)系測試

t = set("Hello")
s = set({3,5,9,10}) 
a = t | s  # t 和 s的并集
print("a = ",a)
b = t & s  # t 和 s的交集
print("b = ",b)
c = t - s  # 求差集(項在t中轿秧,但不在s中)
print("c = ",c)
d = t ^ s  # 對稱差集(項在t或s中中跌,但不會同時出現(xiàn)兩者中)
print("d = ",d)

輸出結(jié)果

a =  {3, 5, 'l', 9, 'e', 10, 'H', 'o'}
b =  set()
c =  {'e', 'H', 'o', 'l'}
d =  {3, 5, 'l', 9, 10, 'e', 'H', 'o'}

元素的添加和刪除

s.add(1)               # 添加一個元素
print(s)
s.update([1,2,'3xx'])  # 添加多個元素
print(s)
#s.remove("10sdsd")     # 移除一個元素,不存在會發(fā)生報錯
#print(s)
s.pop()                # 隨機 移除一個元素
print(s)
print(len(s))                 # 輸出 集合元素個數(shù)
s.clear()               # 清空
print(s)

print( "x" in s)         # 查找x 是否在s 集合里面,存在返回ture
print( "x" not in s)     # 查找x 不在s 集合里面,不在返回true
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市菇篡,隨后出現(xiàn)的幾起案子漩符,更是在濱河造成了極大的恐慌,老刑警劉巖驱还,帶你破解...
    沈念sama閱讀 217,185評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件嗜暴,死亡現(xiàn)場離奇詭異,居然都是意外死亡铝侵,警方通過查閱死者的電腦和手機灼伤,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,652評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咪鲜,“玉大人狐赡,你說我怎么就攤上這事∨北” “怎么了颖侄?”我有些...
    開封第一講書人閱讀 163,524評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長享郊。 經(jīng)常有香客問我览祖,道長,這世上最難降的妖魔是什么炊琉? 我笑而不...
    開封第一講書人閱讀 58,339評論 1 293
  • 正文 為了忘掉前任展蒂,我火速辦了婚禮,結(jié)果婚禮上苔咪,老公的妹妹穿的比我還像新娘锰悼。我一直安慰自己,他們只是感情好团赏,可當(dāng)我...
    茶點故事閱讀 67,387評論 6 391
  • 文/花漫 我一把揭開白布箕般。 她就那樣靜靜地躺著,像睡著了一般舔清。 火紅的嫁衣襯著肌膚如雪丝里。 梳的紋絲不亂的頭發(fā)上曲初,一...
    開封第一講書人閱讀 51,287評論 1 301
  • 那天,我揣著相機與錄音杯聚,去河邊找鬼臼婆。 笑死,一個胖子當(dāng)著我的面吹牛械媒,可吹牛的內(nèi)容都是我干的目锭。 我是一名探鬼主播,決...
    沈念sama閱讀 40,130評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼纷捞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了被去?” 一聲冷哼從身側(cè)響起主儡,我...
    開封第一講書人閱讀 38,985評論 0 275
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎惨缆,沒想到半個月后糜值,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,420評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡坯墨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,617評論 3 334
  • 正文 我和宋清朗相戀三年寂汇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片捣染。...
    茶點故事閱讀 39,779評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡骄瓣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出耍攘,到底是詐尸還是另有隱情榕栏,我是刑警寧澤,帶...
    沈念sama閱讀 35,477評論 5 345
  • 正文 年R本政府宣布蕾各,位于F島的核電站扒磁,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏式曲。R本人自食惡果不足惜妨托,卻給世界環(huán)境...
    茶點故事閱讀 41,088評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望吝羞。 院中可真熱鬧兰伤,春花似錦、人聲如沸脆贵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,716評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽卖氨。三九已至会烙,卻和暖如春负懦,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背柏腻。 一陣腳步聲響...
    開封第一講書人閱讀 32,857評論 1 269
  • 我被黑心中介騙來泰國打工纸厉, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人五嫂。 一個月前我還...
    沈念sama閱讀 47,876評論 2 370
  • 正文 我出身青樓颗品,卻偏偏與公主長得像,于是被迫代替她去往敵國和親沃缘。 傳聞我的和親對象是個殘疾皇子躯枢,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,700評論 2 354

推薦閱讀更多精彩內(nèi)容