推薦使用壓縮軟件和殺毒軟件
7 - zip
使用火絨
一、基本數(shù)據(jù)類型與變量(上)
2.1 注釋
優(yōu)點(diǎn):
- 代碼說明
沒注釋的代碼
有注釋的代碼
- 不讓解釋器執(zhí)行注釋的那句話
2.2 單行注釋
單行注釋快捷鍵:ctrl + ?
2.3多行注釋
"""""" (三個(gè)雙引號(hào))
2.4 字面量變量
字面量是已經(jīng)被定義好的量
在程序中可以直接使用的字面量:1,2,3,4,5,6
185730213551
什么是變量:可以改變的量
計(jì)算機(jī)用來存貯數(shù)據(jù)的盒子,想用這個(gè)數(shù)據(jù),就直接那盒子就好了
變量名 = 值
a = 10
print(a)
10
不要把賦值語句的等號(hào)等同于數(shù)學(xué)的等號(hào):
x = 10
x = x +2
a = 'abc'
b = a
a = 'edg'
print(b)
abc
說明:
1.變量就是可以變化的量,可以隨時(shí)進(jìn)行修改
2.程序是使用來處理數(shù)據(jù)的,而變量就是用來存貯數(shù)據(jù)的
3.變量就是一個(gè)存貯數(shù)據(jù)時(shí),當(dāng)前數(shù)據(jù)所在的內(nèi)存地址的名字
多個(gè)變量賦值
a, b, c = 1, 2, 'd'
print(a)
print(b)
print(c)
1
2
d
a = b = c = 1
print(a)
print(b)
print(c)
1
1
1
2.5 標(biāo)識(shí)符和關(guān)鍵字
規(guī)則如下:
- 由數(shù)字,字母,下劃線組成
- 不能以數(shù)字開頭
- 不能使用內(nèi)置的關(guān)鍵字
- 嚴(yán)格區(qū)分大小寫
2.6命名規(guī)范
- 標(biāo)識(shí)符命名要做到見名知意
name ,age ,
遵守命名規(guī)范
- 駝峰命名法:大駝峰和小駝峰命名法
- 大駝峰:每一個(gè)單詞的首字母都采用大寫字母
First Name, Last Name
- 小駝峰:第一個(gè)單詞以小字母開始;第二個(gè)單詞的首寫字母大寫
myName , youName
2.7關(guān)鍵字
具有特殊功能的的標(biāo)識(shí)符,就是關(guān)鍵字
關(guān)鍵字不能聲明為變量名
#打印python的所有關(guān)鍵字
import keyword
print(keyword.kwlist)
['False', 'None', 'True', 'and', 'as', 'assert', 'async', 'await', 'break', 'class', 'continue', 'def', 'del', 'elif', 'else', 'except', 'finally', 'for', 'from', 'global', 'if', 'import', 'in', 'is', 'lambda', 'nonlocal', 'not', 'or', 'pass', 'raise', 'return', 'try', 'while', 'with', 'yield']
2.8 基本數(shù)據(jù)類型初始
數(shù)值類型
2.8.1 整數(shù)類型 int
1 ,2 ,3, 100, 200, -300, 0
n = 78
print(n)
78
a = 1000_0000_0000_0000
b = 1000000000000000
print(a)
print(b)
1000000000000000
1000000000000000
2.8.2 浮點(diǎn)類型 float
1.23×10^9
12.3×10^8
1.23 , 3.14, -9.1
1.23e9, 12.3e8, 0.000012==》1.2e-5
rount
兩種方式表示浮點(diǎn)數(shù)
- 十進(jìn)制形式 ,1.2 , 1.23 , 12.3
- 指數(shù)形式 (科學(xué)計(jì)數(shù)法)
aen 或者 aEn
a為尾數(shù)部分,n是指數(shù)部分,E或e是固定的字符,用于分割尾數(shù)部分和指數(shù)部分
2.1e5 = 2.1×10^5 其中2.1是尾數(shù),5是指數(shù)
3.7E-2 = 3.7×10^-2 其中3.7是尾數(shù),-2是指數(shù)
0.5E7 = 0.5×10^7 其中0.5是尾數(shù), 7是指數(shù)
14E3 = 14×10^3 其中14是尾數(shù),3是指數(shù)
print(14E3)
float1 = 0.0000000000000000000847
print(float1)
14000.0
8.47e-20
2.8.3 布爾值 bool
只有True 和False 兩種值,注意大小寫
True 表示真(表示條件滿足或者成立) ==》1
False 表示假(表示條件不滿足或者不成立) == 》0
print(3>2)
print(2>3)
True
False
2.8.4 字符串 str
不屬于數(shù)值類型,它是序列類型
以單引號(hào),雙引號(hào),三引號(hào)括起來的任意文本,abc , xyz
基本使用
name = 'python'
age = 18
jiaxiang = '湖北'
print(name+jiaxiang) # 相加就是簡(jiǎn)單的字符串拼接
print(name*5) # 相乘就相當(dāng)于將字符串和自己相加了5次
python湖北
pythonpythonpythonpythonpython
兩種取值順序:
- 從左到右索引默認(rèn)0開始,最大范圍是字符串長(zhǎng)度少1
- 從右往左索引默認(rèn)-1開始,最大范圍是字符串的開頭
str3 = 'abcdefg'
print(str3[2])
print(str3[6])
print(str3[-1])
c
g
g
子字符串[初始位置:結(jié)束位置],包頭不包尾 ,左閉右開
str3 = 'abcdefg'
print(str3[1:6])
print(str3[:6])
print(str3[3:])
bcdef
abcdef
defg
2.9 查看數(shù)據(jù)類型
- 變量沒有類型,數(shù)據(jù)才有類型
type(變量的名字)==》查看數(shù)據(jù)類型
a = 'ab'
b = 123
c = 1.23
print(type(a))
print(type(b))
print(type(c))
<class 'str'>
<class 'int'>
<class 'float'>
2.9.1 轉(zhuǎn)義字符 \
\n ==》 換行
\t ==》 制表符, 一個(gè)tab鍵,也就是四個(gè)空格
\ \ ==》\
轉(zhuǎn)義符 必須寫在引號(hào)內(nèi),轉(zhuǎn)義就是把他變蠢了
print('床前明月光,\n疑是地上霜')
print('床前明月光,\t疑是地上霜')
床前明月光,
疑是地上霜
床前明月光, 疑是地上霜
print('\\\n\\')
\
\
height = 175.0
print('您的身高是:'+height) # 報(bào)錯(cuò)
print('您的身高是:'+str(height))
i = int('123')
print(i)
ii = ('123個(gè)')
print(ii)
您的身高是:175.0
123
123個(gè)
看到這里給大家留一個(gè)彩蛋,初學(xué)作業(yè)
1.用變量給自己建立個(gè)角色信息,要輸出出來
姓名
年齡
身高
家鄉(xiāng)
興趣
是否有編程基礎(chǔ)
2.有一個(gè)字符串變量 s = '人生苦短,我學(xué)python'
通過下標(biāo)索引,分別輸出 苦,學(xué) o 這幾個(gè)字符
二、數(shù)據(jù)類型(下)
1.1 列表生成式
list [1,2,3,4,5,6,7,8,9]
list1 = [1,2,3,4,5,6,7,8,9]
print(list1)
[1, 2, 3, 4, 5, 6, 7, 8, 9]
print(list(range(1,10)))
[1, 2, 3, 4, 5, 6, 7, 8, 9]
1.1.1 普通的列表生成式
# 普通寫法
li = []
for i in range(1,10):
li.append(i)
print(li)
# 列表生成式寫法
print([i for i in range(1,10)])
[1*1,2*2,3*3,4*4,...,9*9]
# 普通寫法
li = []
for i in range(1,10):
li.append(i*i)
print(li)
# 列表生成式
print([i*i for i in range(1,10)])
[1*2,2*3,3*4,...,9*10]
# 普通寫法
li = []
for i in range(1,10):
li.append(i*(i+1))
print(li)
# 列表生成式
print([i*(i+1) for i in range(1,10)])
[2, 6, 12, 20, 30, 42, 56, 72, 90]
[2, 6, 12, 20, 30, 42, 56, 72, 90]
# 求偶數(shù) ,普通寫法
li = []
for i in range(1,11):
if i % 2 == 0:
li.append(i)
print(li)
# 帶if的列表生成式
print([i for i in range(1,11) if i % 2 == 0])
[2, 4, 6, 8, 10]
[2, 4, 6, 8, 10]
使用兩層循環(huán),生成一切組合可能(ABC和123)
# 普通寫法
li = []
for i in 'ABC':
for j in '123':
li.append(i+j)
print(li)
# 雙層循環(huán)寫法
print([i+j for i in 'ABC' for j in '123'])
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']
1.2 元組 tuple
元組通常使用一對(duì)小括號(hào)將所有元素包圍起來,但是小括號(hào)不是必須的
tuple1 = 'python教程', 'Java'
print(tuple1)
print(type(tuple1))
1.2.1 查
count()
tuple2 = (123, 'Google', 'JD', 'Taobao', 123)
print(tuple2.count(123)) # 2
print(tuple2.count('JD'))
2
1
index()
檢索某個(gè)元素的下標(biāo)值
t = (123, 'Google', 'JD', 'Taobao', 123)
print(t.index(123))
print(t.index(123,1))
0
4
1.2.2 功能
1相加,兩個(gè)元組相加生成一個(gè)新的元組
data = ('張三', '李四') + ('王五', '趙六')
print(data)
('張三', '李四', '王五', '趙六')
2.相乘
data = ('張三', '李四')*2
print(data)
('張三', '李四', '張三', '李四')
3.獲取長(zhǎng)度
data = ('張三', '李四')
print(len(data))
2
4.索引
data = ('張三', '李四', '王五', '趙六')
print(data[0])
print(data[1])
print(data[2])
print(data[3])
張三
李四
王五
趙六
5.切片
data = ('張三', '李四', '王五', '趙六')
print(data[0:3])
('張三', '李四', '王五')
6.步長(zhǎng),隔多少取值
data = ('張三', '李四', '王五', '趙六')
print(data[1:4:2]) # 1是開始位置,4是結(jié)束位置,2是步長(zhǎng)
('李四', '趙六')
7.for循環(huán)
data = ('張三', '李四', '王五', '趙六')
for i in data:
if i == '李四':
continue # 結(jié)束本次循環(huán) ,繼續(xù)執(zhí)行下一次循環(huán)
print(i)
張三
王五
趙六
元組的本身是不可變的,如果元組中包含其他可變?cè)?,這些可變?cè)鼐涂梢愿淖?/p>
1.3字符串格式化輸出
你好某某某 我叫某某某 再見某某某
name = 'python'
age = 18
print('大家好, 我叫'+name+', 我今年'+str(age)+'歲')
1.3.1% 方法(占位符)
%s = 字符串 ==》只能放在字符串里面
%d = 整數(shù) ==》 只能放整數(shù)
%f = 小數(shù) ==》默認(rèn)保留六位小數(shù)
%.1f ==> 保留一位小數(shù)
%.2f ==> 保留兩位小數(shù)
語法:('xx%dxxx%s'%(變量1,變量2))# 或者帶入變量數(shù)據(jù)
name = 'python'
age = 18
height = 175.0
print('你好,我叫%s, 今年%d歲了, 身高%f'%(name,age,height))
print('你好,我叫%s, 今年%d歲了, 身高%.1f'%(name,age,height))
print('你好,我叫%s, 今年%d歲了, 身高%.2f'%(name,age,height))
你好,我叫python, 今年18歲了, 身高175.000000
你好,我叫python, 今年18歲了, 身高175.0
你好,我叫python, 今年18歲了, 身高175.00
s = '我叫%s, 今年%d歲了, 身高%f'
print(s%('python', 15, 175.0))
我叫python, 今年15歲了, 身高175.000000
1.3.2 format()
語法:
name = 'python'
age = 18
height = 175.0
print('你好, 我叫{},今年{}歲了,身高{}'.format(name,age,height))
傳入的數(shù)據(jù)類型是不限的,字符串,元組,列表都行
數(shù)據(jù)跟{}順序從左到右一一對(duì)應(yīng)
直接傳數(shù)據(jù)
傳入多個(gè)數(shù)據(jù):
'{}{}{}'.format(數(shù)據(jù)1,數(shù)據(jù)2,數(shù)據(jù)3)
print('你好,我叫{},今年{}歲了,身高{}'.format('python',18,175.0))
自定義數(shù)據(jù):
'{下標(biāo)}{下標(biāo)}'.format(數(shù)據(jù)1,數(shù)據(jù)2)
print('你好,我叫{0},今年{2}歲了,身高{1}'.format('python',175.0,18))
1.3.3 f-format
語法:在字符串里面加上一個(gè)f/F,把要輸出的變量用大括號(hào){}包裹
name = 'python'
age = 18
height = 175.0
print(f'大家好,我叫{name},我今年{age}歲了,身高是{height}')
print(f'大家好,我叫{name[0]},我今年{age+1}歲了,身高是{height-10}')
大家好,我叫python,我今年18歲了,身高是175.0
大家好,我叫p,我今年19歲了,身高是165.0
三 數(shù)據(jù)類型進(jìn)階(上)
2.1散列類型
1.數(shù)據(jù)類型:int , float , bool ==>存儲(chǔ)一個(gè)數(shù)值
2.序列類型: str, list , tuple ==》存儲(chǔ)多個(gè)數(shù)據(jù)
3.散列類型
無序 內(nèi)部元素不重復(fù) 沒有下標(biāo)
2.1.1字典 dict
用來保存一些有典型的對(duì)應(yīng)關(guān)系的數(shù)據(jù)類型,特點(diǎn)是使用鍵值對(duì)的方式來存儲(chǔ)數(shù)據(jù)
key === > 鍵 value===> 值
鍵值對(duì)的語法:key:value
表現(xiàn)形式:
{},不過大括號(hào)里面如果存儲(chǔ)的是鍵值對(duì),那么就是字典
通過鍵查找值
字典名[鍵]
字典的key不可以是重復(fù)的,如果重復(fù)則取最后一個(gè)重復(fù)鍵的值
call = {'python':'11234', 'look':'11235', '阿爾法':'11236'}
user = {'姓名':'python', '年齡':18, '工作':'python講師'}
print(call['python'])
print(user['工作'])
dict1 = {'a':1, 'b':2, 'a':3, 'a':4}
print(dict1)
11234
python講師
{'a': 4, 'b': 2}
可變性
dict1 = {'a':1, 'b':2, 'a':3, 'a':4}
dict1['b'] = 100
print(dict1)
{'a': 4, 'b': 100}
當(dāng)我們想要表示一組固定信息的時(shí)候,用字典就可以更加的直觀
字典包含多個(gè)鍵值對(duì),key是字典的關(guān)鍵數(shù)據(jù),程序?qū)ψ值涞牟僮鞫际腔趉ey的
- 通過key訪問value
- 通過key添加key-value對(duì)
- 通過key刪除key-value對(duì)
- 通過key修改key-value對(duì)
- 通過key判斷指定key-value對(duì)是否存在
通過key訪問value
scores = {'語文':89}
print(scores['語文'])
如果腰圍字典添加key-value對(duì),就只需要為不存的key賦值就可以了
scores['數(shù)學(xué)'] = 93
scores[92] = 8.4
print(scores)
如果要?jiǎng)h除字典中的鍵值對(duì),就可以使用del語句
del scores['語文']
del scores['數(shù)學(xué)']
print(scores)
對(duì)存在的鍵值對(duì)賦值,新的值會(huì)覆蓋原來的值
cars = {'bmw':88, 'benchi':83, 'tesila':95}
cars['benchi'] = 4.3
cars['tesila'] = 3.8
print(cars)
判斷字典是否包含指定的key,使用in或者not in
in not in # in 包含 not in 不包含
cars = {'bmw':88, 'benchi':83, 'tesila':95}
print('tesila' in cars)
print('baoshijie' in cars)
print('BYD' not in cars)
字典的key可以是任意的不可變類型
字典允許直接對(duì)不存在的key賦值,這樣就可以增加一個(gè)鍵值對(duì)
常用方法
字典方法
print(dir(dict))
['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__',
'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
2.1.1.1 clear()
用于清空點(diǎn)中所有的鍵值對(duì)
cars = {'bmw':88, 'benchi':83, 'tesila':95}
print(cars)
cars.clear()
print(cars)
{'bmw': 88, 'benchi': 83, 'tesila': 95}
{}
2.1.1.2 get()
根據(jù)key獲取value的
cars = {'bmw':88, 'benchi':83, 'tesila':95}
print(cars.get('bmw'))
print(cars.get('baoshijie'))
print(cars['baoshijie'])
88
None
print(cars['baoshijie']) # 報(bào)錯(cuò)
KeyError: 'baoshijie'
翻車的地方 (元組)
data = (99,88,77,['左手',18],33,22,11)
data[3] [0] = 'look'
print(data)
元素不可變 但是元素內(nèi)部有可變的類型 就可以改變 但只限于元組內(nèi)部 可變?cè)?/p>
彩蛋
# 1.將列表數(shù)據(jù)[1,2,3,2,1,4,4,4,2,5,6,7,7,9,8,10,10]去重
# 2.有字典 dic = {"k1":"v1","k2":"v2","k3":"v3"},實(shí)現(xiàn)以下功能:
(1)、遍歷字典 dic 中所有的key
(2)、遍歷字典 dic 中所有的value
(3)、循環(huán)遍歷字典 dic中所有的key和value
(4)、添加一個(gè)鍵值對(duì)"k4","v4",輸出添加后的字典 dic
(5)、刪除字典 dic 中的鍵值對(duì)"k1" "v1",并輸出刪除后的字典 dic
(6) 獲取字典 dic中“k2"對(duì)應(yīng)的值
# 3.students =[
{'name':'go','age':18,'score':98,'tel':'18888888888', gender':'female'},
{'name''Java'age :20 'score':95."tel’: 18888888889' 'aender'.'unkown'},
{'name':'python' 'age' 18 'score':88.'tel':'18888888810' 'gender':'male'},
{'name':'php','age':16,'score':58,'tel':'18888888811', 'gender':'unkown'},
{'name':'c' 'age':19.'score':78.'tel':'18888888812' 'gender': male'},
{'name':'c++' 'age':17.'score':92,'tel':'18888888813','gender':'male'},
]
#(1)統(tǒng)計(jì)及格學(xué)生的個(gè)數(shù)
#(2)打印不及格學(xué)生的名字和對(duì)應(yīng)的成績(jī)
# #(3)刪除性別不明的所有的學(xué)生
四、數(shù)據(jù)類型進(jìn)階(中)
1.1 update()
可以使用一個(gè)字典所包含的鍵值對(duì)來更新已經(jīng)有的字典,如果被更新的字典包含對(duì)應(yīng)的鍵值對(duì),那么原來的值會(huì)被覆蓋,如果不包含,就會(huì)被添加進(jìn)去
cars = {'bmw':88, 'benchi':83,'tesila':95}
cars.update({'bmw':4.5,'baoshijie':9.3})
print(cars)
{'bmw': 4.5, 'benchi': 83, 'tesila': 95, 'baoshijie': 9.3}
1.2 items(), keys(), values()
dict_items,dict_keys,dict_values對(duì)象,python不希望用戶直接操作這幾個(gè)方法,但是可以通過list()函數(shù)把他們轉(zhuǎn)成列表
items()==》取鍵值對(duì)
cars = {'bmw':88, 'benchi':83,'tesila':95}
ims = cars.items()
print(ims)
print(type(ims))
print(list(ims))
print(list(ims)[1])
dict_items([('bmw', 88), ('benchi', 83), ('tesila', 95)])
<class 'dict_items'>
[('bmw', 88), ('benchi', 83), ('tesila', 95)]
('benchi', 83)
keys()==> 取鍵
cars = {'bmw':88, 'benchi':83,'tesila':95}
kys = cars.keys()
print(kys)
print(type(kys))
print(list(kys))
print(list(kys)[1])
dict_keys(['bmw', 'benchi', 'tesila'])
<class 'dict_keys'>
['bmw', 'benchi', 'tesila']
benchi
cars = {'bmw':88, 'benchi':83,'tesila':95}
vals = cars.values()
print(vals)
print(type(vals))
print(list(vals))
print(list(vals)[1])
dict_values([88, 83, 95])
<class 'dict_values'>
[88, 83, 95]
83
程序調(diào)用字典的三個(gè)方法后,都需要調(diào)用給他們轉(zhuǎn)成列表,這樣就可以吧這三個(gè)方法的返回值轉(zhuǎn)成列表
1.3 pop()
用于獲取指定的key對(duì)應(yīng)的value值,并且刪除這個(gè)鍵值對(duì)
cars = {'bmw':88, 'benchi':83,'tesila':95}
print(cars.pop('tesila'))
print(cars)
95
{'bmw': 88, 'benchi': 83}
1.4 setdefault()
能返回指定的key對(duì)應(yīng)的value值,如果鍵值對(duì)不存在,就會(huì)先為這個(gè)鍵設(shè)置默認(rèn)的值,再返回這個(gè)鍵對(duì)應(yīng)的值
cars = {'bmw':88, 'benchi':83,'tesila':95}
print(cars.setdefault('baoshijie',92))#兩個(gè)參數(shù),第二個(gè)是設(shè)置默認(rèn)值,如果不存在就會(huì)新增鍵值對(duì)
print(cars)
92
{'bmw': 88, 'benchi': 83, 'tesila': 95, 'baoshijie': 92}
2.1 字典
2.1.1公共功能
長(zhǎng)度
info = {'age':12, 'shengming':True, 'name':'fe'}
data = len(info)
print(data)
3
索引(鍵)
info = {'age':12, 'shengming':True, 'name':'fe'}
print(info['name']) # fe 字典 通過鍵 查找值
print(info['age']) #12
print(info['xxx']) # 報(bào)錯(cuò) 如果鍵不存在會(huì)報(bào)錯(cuò)
fe
12
報(bào)錯(cuò)
value = info.get('xxx') # 使用get方法獲取值如果不存在就打印None
print(value)
None
for循環(huán)
info = {'age':12, 'shengming':True, 'name':'fe'}
#直接遍歷這個(gè)字典,可以獲取所有的鍵
for item in info:
print(item) #所有鍵
age
shengming
name
#使用keys方法
for item in info.keys():
print(item) # 所有鍵
#使用values方法
for item in info.values():
print(item) # 所有值
#使用items方法
for key,value in info.items():
print(key,value) # 獲取所有的鍵值
2.2 集合
元素都是唯一的,互不相同的
{name1, name2, .....name n}
語法:
集合名 = {數(shù)據(jù)1,數(shù)據(jù)2,數(shù)據(jù)3,。。。。數(shù)據(jù)n}#如果有重復(fù)的數(shù)據(jù),是不會(huì)被添加到內(nèi)存空間里面
無法存儲(chǔ)列表,字典,集合這些數(shù)據(jù)類型,否則會(huì)報(bào)錯(cuò)
#報(bào)錯(cuò)
print({{'a':1}})
print({[1,2,3]})
print({{1,2,3}})
要注意的是:集合中的數(shù)據(jù)必須保證是唯一的,集合對(duì)于美中數(shù)據(jù)元素,只會(huì)保留一份,也就是去重
s = {1,2,1,(1,2,3),'c','c'}
print(s)
{1, 2, (1, 2, 3), 'c'}
python中set是沒有順序的,每次輸出時(shí)順序都有可能不同
set1 = {1,2,3,4,5,5,1,2,3,4,5,6,7,9,1}
print(set1)
# print(set1[1])
print(type(set1))
{1, 2, 3, 4, 5, 6, 7, 9}
<class 'set'>
注意 :創(chuàng)建空集合的時(shí)候必須要使用set()而不是{},因?yàn)閧}默認(rèn)是空字典
li1 = [] # 空列表
tu1 = () # 空元組
str1 = '' # 空字符串
dict1 = {} # 空字典
set1 = set() #空集合
# 去重并轉(zhuǎn)為列表輸出
li = [1,2,3,4,5,6,7,89,41,1,1,1]
# li1 = set(li)
# li2 = list(li1)
# print(li1)
# print(li2)
print(list(set(li)))
[1, 2, 3, 4, 5, 6, 7, 41, 89]
2.2.1 集合的數(shù)學(xué)運(yùn)算
運(yùn)算符操作 | python運(yùn)算符 | 含義 |
---|---|---|
交集 | & | 取兩集合公共的元素 |
并集 | | | 取兩集合全部的元素 |
差集 | - | 取一個(gè)集合中另一集合沒有的元素 |
成員運(yùn)算 | in 和 not in | 判斷某個(gè)元素是否在或者不在集合中 |
集合1 & 集合2——》判斷交集
集合2 | 集合1——》判斷并集
集合1 - 集合2——》判斷差集
交集:兩個(gè)集合里面共同有的數(shù)據(jù)
并集:兩個(gè)集合里面的全部數(shù)據(jù)(不包括重復(fù)數(shù)據(jù),集合本身也不能重復(fù))
差集:集合1 - 集合2 減去共有的,剩下的就是差集
set1 = {1,2,3}
set2 = {3,4,5}
print(set1 & set2)
print(set1 | set2)
print(set1 - set2)# 差集{1, 2} 取一個(gè)集合中另一個(gè)集合沒有的元素,將set1中屬于set2的元素刪除
print(set2 - set1)# 4,5
print(3 in set2)
{3}
{1, 2, 3, 4, 5}
{1, 2}
{4, 5}
True
集合的作用:
- 存儲(chǔ)非重復(fù)數(shù)據(jù)
- 用于將序列類型去重,邏輯判斷(交集,并集,差集)
2.2.2 增
add() 參數(shù)為要添加的對(duì)象,通過多次添加數(shù)據(jù)可以發(fā)現(xiàn)添加后的元素位置不確定
語法: 集合名.add(元素)
s = {'Java'}
s.add('python')
print(s)
s.add('go')
print(s)
s.add('c')
print(s)
s.add('c++')
print(s)
{'Java', 'python'}
{'go', 'Java', 'python'}
{'go', 'Java', 'python', 'c'}
{'c', 'c++', 'go', 'python', 'Java'}
update() 參數(shù)為序列類型,會(huì)將每一個(gè)元素迭代添加到序列中(隨機(jī)添加)
s = {'fe'}
s.update('123')
print(s)
s.update([4,5,6])
print(s)
{'3', '2', 'fe', '1'}
{'2', 4, 5, 6, '3', '1', 'fe'}
2.2.3 刪
pop()隨機(jī)刪除一個(gè)元素
實(shí)際上在進(jìn)行代碼實(shí)驗(yàn)的時(shí)候并不是隨機(jī)的
僅僅是在集合元素是字符串類型時(shí),并且在cmd運(yùn)行的時(shí)候才會(huì)隨機(jī)刪除,pycharm中默認(rèn)保持刪除第一個(gè)元素
s = {'fe'}
s.update('123')
print(s)
s.update([4,5,6])
print(s)
s.pop()
print(s)
s.pop()
print(s)
{'2', '1', 'fe', '3'}
{'1', 4, 'fe', 5, 6, '2', '3'}
{4, 'fe', 5, 6, '2', '3'}
{'fe', 5, 6, '2', '3'}
remove(參數(shù))有參數(shù),參數(shù)就是要?jiǎng)h除的元素,如果元素不存在就報(bào)錯(cuò)
集合名.remove(元素)
s = {'fe'}
s.update('123')
print(s)
s.update([4,5,6])
print(s)
s.remove('1')
print(s)
s.remove('2')
print(s)
s.remove('8')
print(s)
{'1', 'fe', '2', '3'}
{4, 5, 6, '3', '1', '2', 'fe'}
{4, 5, 6, '3', '2', 'fe'}
{4, 5, 6, '3', 'fe'}
報(bào)錯(cuò)
discard()跟remove相似,但是元素不存在也不會(huì)報(bào)錯(cuò)
s = {'fe'}
s.update('123')
print(s)
s.update([4,5,6])
print(s)
s.discard('aaa')
print(s)
{'3', '1', 'fe', '2'}
{4, 5, 6, '3', 'fe', '1', '2'}
{4, 5, 6, '3', 'fe', '1', '2'}
clear() 清空集合中的元素
s = {'fe'}
s.update('123')
print(s)
s.update([4,5,6])
print(s)
s.clear()
print(s)
{'1', '3', '2', 'fe'}
{'2', 4, 5, 6, 'fe', '3', '1'}
set()
del () 集合名(),刪除集合
# 整個(gè)吧盒子(變量)刪除了,所以會(huì)報(bào)錯(cuò),先刪除了盒子,再去打印這個(gè)s就會(huì)報(bào)錯(cuò)顯示盒子s不存在
s = {'fe'}
s.update('123')
print(s)
s.update([4,5,6])
print(s)
del s
print(s)
2.2.4 改
由于set中的數(shù)據(jù)沒有索引,也沒有辦法去定位一個(gè)元素,所以沒辦法直接修改
先刪除在添加
s = {'A', 'B', 'C', 'D'}
# 把A改為E
s.remove('A')
s.add('E')
print(s)
{'B', 'E', 'C', 'D'}
2.2.5查
set是一個(gè)可迭代對(duì)象,可以通過for循環(huán)進(jìn)行遍歷查詢
s = {'A', 'B', 'C', 'D'}
for i in s:
print(i)
A
C
D
B
復(fù)習(xí)鞏固 練習(xí)題
在終端中獲取顏色(RGBA),打印描述信息,否則提示顏色不存在
"R" -->"紅色"
"G" -->"綠色"
"B" -->"藍(lán)色"
"A" -->"透明度"
# 1.將列表數(shù)據(jù)[1,2,3,2,1,4,4,4,2,5,6,7,7,9,8,10,10]去重
li1 = [1,2,3,2,1,4,4,4,2,5,6,7,7,9,8,10,10]
li2 = []
for i in li1:
if i not in li2:
li2.append(i)
print(li2)
#或者
print(list(set(li1)))
# 2.有字典 dic = {"k1": "v1", "k2": "v2", "k3": "v3"},實(shí)現(xiàn)以下功能:
# (1)、遍歷字典 dic 中所有的key
dic = {"k1": "v1", "k2": "v2", "k3": "v3"}
for key in dic.keys():
print(key)
# (2)、遍歷字典 dic 中所有的value
for value in dic.values():
print(value)
# (3)、循環(huán)遍歷字典 dic 中所有的key和value
for key,value in dic.items():
print(key,value)
# (4)、添加一個(gè)鍵值對(duì)"k4","v4",輸出添加后的字典 dic
dic['k4'] = 'v4'
print(dic)
# (5)、刪除字典 dic 中的鍵值對(duì)"k1","v1",并輸出刪除后的字典 dic
dic.pop('k1')
print(dic)
# (6)、獲取字典dic中“k2”對(duì)應(yīng)的值
print(dic.get('k2'))
students = [
{'name': 'Java', 'age': 18, 'score': 98, 'tel': '18888888888', 'gender': 'female'},
{'name': 'c', 'age': 20, 'score': 95, 'tel': '18888888889', 'gender': 'unkown'},
{'name': 'python', 'age': 18, 'score': 88, 'tel': '18888888810', 'gender': 'male'},
{'name': 'c++', 'age': 16, 'score': 58, 'tel': '18888888811', 'gender': 'unkown'},
{'name': 'php', 'age': 19, 'score': 78, 'tel': '18888888812', 'gender': 'male'},
{'name': 'go', 'age': 17, 'score': 92, 'tel': '18888888813', 'gender': 'male'},
]
# (1)統(tǒng)計(jì)及格學(xué)生的個(gè)數(shù)
count = 0 #初始化一個(gè)值
for d in students:
if d['score'] >= 60:
count += 1
print(count)
# (2)打印不及格學(xué)生的名字和對(duì)應(yīng)的成績(jī)
for d in students: #d是字典
if d['score'] < 60:
print(d['name'],d['score'])
# (3)刪除性別不明的所有的學(xué)生
for d in students:
if d['gender'] == 'unkown':
#pop根據(jù)下標(biāo) remove根據(jù)值刪除 clear 清空 del 列表名[下標(biāo)]
students.remove(d) # 刪除性別不明
print(students)
復(fù)習(xí)鞏固答案
1.編寫一個(gè)程序,檢查任意一個(gè)年份是否是閏年
- 如果一個(gè)年份可以被4整除不能被100整除,或者可以被400整除,這個(gè)年份就是閏年
year = int(input('請(qǐng)輸入一個(gè)年份:'))
if year % 4 == 0 and year % 100 != 0 or year %400 == 0: # != 不相等
print(year,'是閏年')
else:
print(year,'是平年')
2.從鍵盤輸入小明的期末成績(jī):
當(dāng)成績(jī)?yōu)?00時(shí),'獎(jiǎng)勵(lì)一輛BMW'
當(dāng)成績(jī)?yōu)?80-99)時(shí),'獎(jiǎng)勵(lì)一臺(tái)iphone'
當(dāng)成績(jī)?yōu)?60-79)時(shí),'獎(jiǎng)勵(lì)一本參考書'
其他時(shí),獎(jiǎng)勵(lì)棍子一根
3.計(jì)算1+2+3+...+100(使用while循環(huán))
num = 1
sum = 0 # 初始化一個(gè)累計(jì)的變量
while num < 101:
sum += num
num += 1 # num1 =num + 1
print('num=',sum)
4.打印99乘法表:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
for i in range(1,10):
for j in range(1,i+1):
print(i,'*',j,'=',i*j,end='\t')
print()
五 數(shù)據(jù)類型進(jìn)階(下)
python的數(shù)據(jù)類型可以分為三類:數(shù)值類型,序列類型,散列類型
數(shù)值類型:int , float , bool
2.1 序列類型
元素1 元素2 元素3 元素4 元素。。。。 元素n
0 1 2 3 4 n-1
-n
# 元素下面的是索引取值
s = 'CSDN博客論壇'
print(s[0],'=',s[-8])
print(s[-1],'=',s[7])
C = C
壇 = 壇
2.2 字符串 str
字符串是一個(gè)有序的字符集和,用于存貯和表示基本的文本信息
2.2.1 常用方法
操作數(shù)據(jù)最本質(zhì)的行為是什么?== 》增刪改查
字符串.方法名
2.2.1.1 find
find的作用:范圍性查找子串,返回索引值,沒有則返回-1
語法:
str.find(str,beg=0,end=len(string))
- str==> 指定檢索的字符串
- beg==》開始的索引,默認(rèn)值為0
- end==》結(jié)束的索引,默認(rèn)為字符串的長(zhǎng)度
find常用于檢測(cè)字符串中是否包含子字符串str
s = 'hello world'
print(s.find('o')) #o 的索引值就是4
print(s.find('hello')) # 找到hello則返回首個(gè)字符的索引
print(s.find('worldd')) # 找不到返回-1
s = ('python,helloworld,java,php')
print(s.find('h')) # 返回的是首個(gè)h的下標(biāo)
print(s.find('h',4)) # 從下標(biāo)為4的地方開始找
print(s.rfind('h')) # 從后往前找
2.2.1.2 index()
檢測(cè)字符串中是否包含子字符串str,如果指定beg和end范圍,則檢查是否包含在指定范圍內(nèi),和find差不多,只不過如果子str不在str中會(huì)報(bào)錯(cuò)
s = ('python,helloworld,java,php')
print(s.index('world')) # 12 索引值
print(s.index('worldd')) # 報(bào)錯(cuò)
2.2.1.3 count()
返回找到的子串個(gè)數(shù)
s = ('python,helloworld,java,php')
print(s.count('h')) # 3 h的個(gè)數(shù)
2.2.1.4 strip()
去除字符串兩邊的空格,換行符,制表符,得到的是一個(gè)新的字符串
code = input('請(qǐng)輸入4位的驗(yàn)證碼:')
data = code.strip()
if data == 'ABCD':
print('驗(yàn)證碼正確')
else:
print('驗(yàn)證碼錯(cuò)誤')
2.2.1.5 startswith(), endswith()
- 判斷字符串是否已xx開頭,得到一個(gè)布爾值
dizhi = input('請(qǐng)輸入住址:')
if dizhi.startswith('北京市'):
print('北京人口')
else:
print('非北京人口')
- 判斷字符串是否已xx結(jié)尾,得到一個(gè)布爾值
dizhi = input('請(qǐng)輸入住址:')
if dizhi.endswith('村'):
print('農(nóng)業(yè)戶口')
else:
print('非農(nóng)業(yè)戶口')
s = '北京市朝陽(yáng)區(qū)'
print(s.startswith('北京市'))
2.2.1.6 isdigit()
- 判斷字符串是否是數(shù)字組成,返回的結(jié)果是布爾值
v1 = input('請(qǐng)輸入第一個(gè)值:')
v2 = input('請(qǐng)輸入第二個(gè)值:')
if v1.isdigit() and v2.isdigit():
data = int(v1)+int(v2)
print(data)
else:
print('請(qǐng)輸入正確的數(shù)字')
2.2.1.7lower() 和 upper()
字符串變大寫/小寫,得到一個(gè)新的字符串
lower()==》轉(zhuǎn)小寫
upper()==》轉(zhuǎn)大寫
s = 'C'
print(s)
s1 = s.lower()
print(s1)
s2 = s1.upper()
print(s2)
C
c
C
2.2.1.8 split()
切分字符串,將字符串類型轉(zhuǎn)成列表,默認(rèn)以空格切分,也可以指定字符切分
s = 'my name is zuoshou'
print(s.split())
s1 = 'python,helloworld,java,php'
print(s1.split(','))
['my', 'name', 'is', 'zuoshou']
['python', 'helloworld', 'java', 'php']
2.2.1.9 replace()
字符串內(nèi)容的替換,得到一個(gè)新的字符串
s = input('請(qǐng)輸入評(píng)論信息:')
s1 = s.replace('草','*')
print(s1)
2.2.1.10 join()
用于將序列中的元素以指定的字符串連接生成一個(gè)新的字符串
常用于將列表轉(zhuǎn)為字符串
a = ['Java', '和', 'python', '是', '好朋友']
print(''.join(a)) # 常用于轉(zhuǎn)化列表為字符串時(shí)使用
print('-'.join(a))
Java和python是好朋友
Java-和-python-是-好朋友
2.2.2 字符串的公共功能
2.2.2.1正向?。◤淖笸遥聪蛉。◤挠彝?,負(fù)號(hào))
s = 'hello python'
# 正向取值
print(s[0]) # 取值為 h
print(s[5]) # 空格,空格也算是字符串里的一個(gè)字符
# 反向取值
print(s[-4]) # 取值為 t
len的用法
len 是從1開始數(shù) 計(jì)量字符串長(zhǎng)度
print(s[len(s)-1]) # 最后一個(gè)值
print(len(s)) # len 計(jì)算字符串的長(zhǎng)度
print(s[-len(s)]) # len 前面加負(fù)號(hào) 是從右到左取值
2.2.2.2 切片(顧頭不顧尾,步長(zhǎng))
s = 'hello python'
print(s[::2])
hlopto
步長(zhǎng):0:9:2 第三個(gè)參數(shù)2代表步長(zhǎng),會(huì)從下標(biāo)0開始,每次累加一個(gè)2就可以
print(s[0:9:2])
hlopt
print(s[::-1]) # 從右到左依次取值 反向取值 步長(zhǎng)為負(fù)數(shù)就是從右到左 首尾不給值就是取所有
nohtyp olleh
2.3 列表 list
可以存放多個(gè)不同類型的元素,記錄多個(gè)同種屬性的值
列表:存貯同一個(gè)類別的數(shù)據(jù),方便操作文章來源:http://www.zghlxwxcb.cn/news/detail-560864.html
字符串,不可變類型:創(chuàng)建好之后內(nèi)部無法修改[內(nèi)置功能都是新創(chuàng)建一份數(shù)據(jù)]
name = 'java'
data = name.upper()
print(name)
print(data)
java
JAVA
列表,可變類型:創(chuàng)建好之后內(nèi)部元素可以修改[獨(dú)有功能基本上都是直接操作列表內(nèi)部的,不會(huì)創(chuàng)建一份新的數(shù)據(jù)]
list1 = ['車子', '房子']
list1.append('妹子') # append ’添加‘的方法
print(list1)
['車子', '房子', '妹子']
列表的創(chuàng)建文章來源地址http://www.zghlxwxcb.cn/news/detail-560864.html
列表名 = []
2.3.1 增
1.append:添加一個(gè)數(shù)據(jù),添加到列表的最后一位
語法: 列表名.append('python')
li..append('python')
print(li)
[2, 3, 4, 5, 6, 7, 8, 9, 10, 'python']
2.insert: 添加一個(gè)數(shù)據(jù)到指定位置
語法:列表名.insert(下標(biāo)位置,內(nèi)容)
li.insert(0,'look')
print(li)
['look', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'python']
3.extend:添加一個(gè)序列類型到最后一位,并且吧序列類型拆分
語法:列表名.extend(序列類型)
li.extend('吸血鬼')
print(li)
li.extend(['吸血鬼'])
print(li)
['look', 2, 3, 4, 5, 6, 7, 8, 9, 10, '左手', '吸', '血', '鬼']
['look', 2, 3, 4, 5, 6, 7, 8, 9, 10, '左手', '吸', '血', '鬼', '吸血鬼']
2.3.2 刪
pop:刪除一個(gè)值,默認(rèn)從最后一個(gè)開始刪,也可以指定位置
語法:列表名.pop()
列表名.pop(下標(biāo))
li.pop(-1)
print(li)
['look', 2, 3, 4, 5, 6, 7, 8, 9, 10, 'python', '吸', '血', '鬼']
remove:刪除一個(gè)指定的值,如果有多個(gè),從第一個(gè)開始刪
語法:列表名.remove(刪除對(duì)象)
li.remove(3) # 刪除對(duì)象
print(li)
['look', 2, 4, 5, 6, 7, 8, 9, 10, 'python', '吸', '血', '鬼']
clear :清空列表里面的所有數(shù)據(jù)
語法:列表名.clear()
li.clear()
print(li)
[]
del : 全局刪除,可以刪除一個(gè)變量
語法:del 列表名[下標(biāo)]
del li[3] # 下標(biāo)
print(li)
['look', 2, 4, 6, 7, 8, 9, 10, 'python', '吸', '血', '鬼']
2.3.3 改
單個(gè)修改:直接通過下標(biāo)進(jìn)行修改
語法:列表名[下標(biāo)] = 內(nèi)容
li[1] = '阿爾法'
print(li)
['look', '阿爾法', 4, 6, 7, 8, 9, 10, 'python', '吸', '血', '鬼']
多個(gè)修改:通過切片的方式進(jìn)行修改
語法: 列表名[起點(diǎn):終點(diǎn)] = 數(shù)值1, 數(shù)值2
li[1:3] = 70,20
print(li)
['look', 70, 20, 6, 7, 8, 9, 10, '左手', '吸', '血', '鬼']
2.3.4查
index:根據(jù)內(nèi)容獲取指定數(shù)據(jù)的下標(biāo)
語法:列表名。index(要找的內(nèi)容)
print(li)
print(li.index(8))
5
列表名。index(要找的內(nèi)容,起點(diǎn)值)
print(li.index(20,5)) #報(bào)錯(cuò),顯示20不在列表中
count:統(tǒng)計(jì)數(shù)據(jù)出現(xiàn)的次數(shù)
語法:列表名.count(要找的內(nèi)容)
print(li.count(10))
1
2.3.5 其他
排序(全int的列表才可以排序)
sort:讓列表的內(nèi)容按照降序/升序的方式來排序
列表名.sort()——》升序
li1 = [1,85,6,8,61,3,45321,1965]
li1.sort()
print(li1)
[1, 3, 6, 8, 61, 85, 1965, 45321]
列表名.sort(reverse=True)——》降序
li1 = [1,85,6,8,61,3,45321,1965]
li1.sort(reverse=True)
print(li1)
[45321, 1965, 85, 61, 8, 6, 3, 1]
到了這里,關(guān)于Python保姆級(jí)教程 數(shù)據(jù)類型—新手小白入門必看系列的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!