2019-03-13

1. 格式字符串

%s, %d, %.2f, %c

name = '喜愛'
age = 18
message = name + '今年' + str(age) + '歲'
message = '%s今年%d %c' % (name, age, 0xe4ff)
print(message)

2.列表(list)

可變(支持增刪改)、有序(支持下標(biāo)操作)

列表中元素的增刪改查

1)查: 查單個(gè)元素: 列表[下標(biāo)] - 結(jié)果是元素 切片:列表[開始下標(biāo):結(jié)束下標(biāo):步長] - 是列表

遍歷 - 結(jié)果是元素

2)增: 列表.append(元素) \ 列表.insert(下標(biāo), 元素)

3)刪: del 列表[下標(biāo)] \ 列表.remove(元素) \ 列表.pop(下標(biāo))

4)改: 列表[下標(biāo)] = 新值

list1 = [1, 2, 3] # [100, 200, 300]

list1.remove(1)

print(list1)

print(list1.remove(1)) # null NULL Null

print(list1)
1.列表相關(guān)運(yùn)算

1)數(shù)學(xué)運(yùn)算: +, *

列表1+列表2 - 將兩個(gè)列表中的元素合并產(chǎn)生一個(gè)新的列表(原列表不會發(fā)生改變)

列表*N - 列表中的元素重復(fù)N次產(chǎn)生新的列表

list1 = [1, 2, 3]
list2 = ['name', 'age']
new_list = list1 + list2
print(new_list, list1, list2)
print(list13)
list3 = [1]
100
print(list3)

2)比較運(yùn)算: ==, !=

list4 = [1, 2]
print([1, 2] == [2, 1]) # False
print([1, 2] != [2, 1]) # True
print([1, 2] == list4) # True

>, <, >=, <= 只支持相同位置上元素類型相同的兩個(gè)列表 (了解)

print([1, '2', 3] > [100, 'z'])

print([1, 2, 3] > ['a', 'b']) #TypeError: '>' not supported between instances of 'int' and 'str'

2.內(nèi)置函數(shù)

len(列表)楚昭、sum(列表) - 要求列表中的元素必須是數(shù)字栖袋、max(列表)、min(列表)

list(數(shù)據(jù)) - 將指定數(shù)據(jù)轉(zhuǎn)換成列表, 所有的序列都可以轉(zhuǎn)換成列表,比如: 字符串抚太,列表塘幅、字典、集合尿贫、元祖电媳、range、迭代器庆亡、生成器等

- 轉(zhuǎn)換的時(shí)候是將序列中的元素作為列表元素

print(sum(['1', 'abc', 'hj']))

print(max([1, 'a']))

print(list('abcd'))
print(list(range(5)))
print(list(str(123)))

nums = ['10', '23', '4'] # 10234
print(''.join(nums))

3.相關(guān)方法

1) 列表.count(元素) - 獲取指定元素在列表中出現(xiàn)的次數(shù), 結(jié)果是整數(shù)

print([1, 2, 3, 1, 4].count(1))

2) 列表.extend(序列) - 將序列中的元素添加到列表中, 結(jié)果None

list1 = []
list1.extend('abc')
print(list1)
list1.extend(range(3))
print(list1)
list1.extend(['張飛', '關(guān)羽', '趙云'])
print(list1)

list1.extend(['呂布'])
print(list1)

3)列表.index(元素) - 獲取指定元素在列表中的下標(biāo)匾乓,如果這個(gè)元素有多個(gè)只獲取第一個(gè),如果元素不存在會報(bào)錯(cuò)

list2 = [1, 0, 1, 2, '張飛', '關(guān)羽', '趙云', '呂布']
print(list2.index('張飛'))

print(list2.index('諸葛亮')) # ValueError: '諸葛亮' is not in list

4)列表.reverse() - 將列表中的元素倒序, 不會產(chǎn)生新列表

list2.reverse()
print(list2)

補(bǔ)充: 內(nèi)置函數(shù): reversed(序列) - 將序列中的元素倒序產(chǎn)生一個(gè)新的迭代器又谋, 原序列不會修改

list1 = [1, 2, 3]
result = reversed('abc')

for item in result:

print(item)

print(list(result))
print(list1)

5)列表.sort() - 對列表中的元素從小到大排序(列表中的元素類型一致并且支持比較運(yùn)算), 不會產(chǎn)生新的列表

列表.sort(reverse=True) - 從大到小排序

scores = [10, 100, 89, 20, 67, 34, 9]

scores.sort()

print(scores) # python cookbook/ 流暢的python

scores.sort(reverse=True)
print(scores)

6)列表.copy() - 產(chǎn)生一個(gè)新的列表拼缝,列表中的元素和原列表一樣,相當(dāng)于: 列表[:]

list1 = [1, 2, 3]
list2 = list1
list3 = list1.copy()
print(list2, list3)

list1.append(10)
print(list2, list3)

id(變量) - 查看變量中實(shí)質(zhì)存儲的地址

python所有變量實(shí)質(zhì)都是直接保存的數(shù)據(jù)在內(nèi)存中的地址

print(id(list1), id(list2), id(list3))

列表中刪除數(shù)據(jù)

刪除列表中所有小于60的數(shù)字

問題1: 通過元素刪除的時(shí)候可能出現(xiàn)刪不干凈的問題

scores = [10, 50, 90, 89, 45, 70]
for score in scores:
if score < 60:
scores.remove(score)

print(scores, score) # [50, 90, 89, 20, 70]

"""
scores = [10, 50, 90, 89, 45, 70]
score = 10 if 10 < 60 scores.remove(10) scores = [50, 90, 89, 45, 70]
score = 90 if 90 < 60
score = 89 if 89 < 60
score = 45 if 45 < 60 scores.remove(45) scores = [50, 90, 89, 70]
"""

解決問題1:

scores = [10, 50, 90, 89, 45, 70]
scores2 = scores[:]
for score in scores2:
if score < 60:
scores.remove(score)
del scores2 # score2只是提供遍歷用的彰亥,用完后沒有其他用處咧七,可以直接刪除
print(scores, score)

上面的簡寫

scores = [10, 50, 90, 89, 45, 70]
for score in scores[:]:
if score < 60:
scores.remove(score)
print(scores, score)
"""
scores = [10, 50, 90, 89, 45, 70]
scores2 = [10, 50, 90, 89, 45, 70]
score = 10 if 10<60 scores.remove(10) scores = [50, 90, 89, 45, 70]
score = 50 if 50<60 scores.remove(50) scores = [90, 89, 45, 70]
score = 90 if 90<60
score = 89 if 89<60
score = 45 if 45<60 scores.remove(45) scores = [90, 89,70]
score = 70 if 70<60
"""

問題2:通過下標(biāo)刪除滿足要求的元素的時(shí)候,出現(xiàn)下標(biāo)越界的錯(cuò)誤

print('====================問題2=====================')

scores = [10, 50, 90, 89, 45, 70]

for index in range(len(scores)):

if scores[index] < 60:

del scores[index]

print(scores)

"""
scores = [10, 50, 90, 89, 45, 70]
for index in range(6)
index = range(6) index = (0,1,2,3,4,5)
index = 0 if scores[0]<60 if 10<60 del scores[0] scores = [50, 90, 89, 45, 70]
index = 1 if scores[1]<60 if 90<60
index = 2 if scores[2]<60 if 89<60
index = 3 if scores[3]<60 if 45<60 del scores[3] scores = [50, 90, 89, 70]
index = 4 if scores[4]<60 (out of range)
"""

解決問題2:

scores = [10, 50, 90, 89, 45, 70]
index = 0
while index < len(scores):
if scores[index] < 60:
del scores[index]
continue
index += 1

print(scores)
"""
scores = [10, 50, 90, 89, 45, 70]
index = 0
while 0 < 6 if 10<60 del scores[0] scores = [50, 90, 89, 45, 70]
while 0 < 5 if 50<60 del scores[0] scores = [90, 89, 45, 70]
while 0 < 4 if 90<60 index += 1 index = 1
while 1 < 4 if 89<60 index += 1 index = 2
while 2 < 4 if 45<60 del scores[2] scores = [90, 89,70]
while 2 < 3 if 70<60 index += 1 index = 3
while 3 < 3
print(scores) - [90, 89,70]
"""

1.什么是元祖(tuple):

元祖就是不可變的列表, 作為序列不可變(不支持增刪改)但是有序(支持下標(biāo)操作)

(元素1, 元素2, 元素3,....) , 元素的要求和列表一樣

2.查 - 獲取元素 (和列表一樣)

tuple1 = ('abc', 2, 3, 4)
print(tuple1[0], tuple1[-1])

print(tuple1[10]) # IndexError: tuple index out of range

print(tuple1[0:5:2])
for item in tuple1:
print(item)

for index in range(len(tuple1)):
print(index, tuple1[index])

3.數(shù)學(xué)運(yùn)算任斋、比較運(yùn)算继阻、in/not in、 len(), max(), min(), sum(), tuple()和對應(yīng)的列表操作是一樣的

print((1, 2, 3)+('a', 'b', 'c'))
print((1, 2, 3) * 2)
print(100 in (1, 2, 3))
print(tuple('abcd'), tuple(range(4)), tuple(['abc', 100]))

4.元祖專有特點(diǎn)

1)只有一個(gè)元素的元祖, 需要在這個(gè)元素的后面加一個(gè)逗號

tu1 = ('abc',)
print(type(tu1))

2)元祖的值可以去掉小括號废酷,(直接將多個(gè)元素用逗號隔開穴翩,也表示一個(gè)元祖)

tu2 = 10, 20, 30, 'abc'
print(tu2, type(tu2))

3) 讓變量的個(gè)數(shù)和元祖中元素的個(gè)數(shù)保持一致,可以讓變量依次取出元祖的中的元素

point = (100, 200)
x, y = point
print(x, y)

x, y = (100, 200)
x, y = 100, 200

a = 10
b = 20
a, b = (b, a) # a, b = (b,a) = (20, 10) a = 20, b=10

3.2) 通過多個(gè)變量去獲取元祖元素的時(shí)候锦积,可以在某個(gè)變量的前面加來將這個(gè)變量變成列表獲取不帶的變量取剩下的數(shù)據(jù)

注意:這兒帶*的變量只能有一個(gè)

student = ('小明', 30, 60, 50, 100, 175)
name, age, *scores, height = student
print(name, scores)

name, *x = student
print(name, x)

*x, y, z = student
print(x, y)

1.什么是字典(dict)

字典是python內(nèi)置的一個(gè)容器型數(shù)據(jù)類型, 可變(支持增刪改)芒帕、無序(不支持下標(biāo)操作)

{鍵1:值1, 鍵2:值2, 鍵3:值3,....} 鍵:值 -> 鍵值對

鍵(key): a.不可變 b.唯一 (實(shí)際開發(fā)建議用字符串)

值(value): 和列表元素的要求一樣

注意: 鍵值對是成對出現(xiàn);字典存數(shù)據(jù)丰介,實(shí)質(zhì)要存的是值背蟆,鍵是值的索引

dict1 = {'a': 100, 'b': 'abc', 'c': [1, 2], 'd': {'a': 100}}
print(dict1)

dict1 = {'a': 100, 'b': 'abc', 'a': [1, 2]}
print(dict1) # {'a': [1, 2], 'b': 'abc'}

2.什么時(shí)候用字典

如果同時(shí)保存的多個(gè)數(shù)據(jù)是具有相同意義的數(shù)據(jù)鉴分,用列表;如果同時(shí)保存的多個(gè)數(shù)據(jù)的意義不同带膀,就使用字典

person1 = ['余婷', 18, 100, 40, 155, 50]
person2 = {'name': '余婷', 'age': 18, 'score': 100, 'height': 155, 'weight': 50}
print(person1[0])
print(person2['name'])

allstudents = [
{'name': '張三', 'age': 18, 'tel': '110', 'dog':{'sex': '母狗', 'color': '白色', 'name': '大黃'}},
{'name': '小明', 'age': 20, 'tel': '220'},
{'name': '張三', 'age': 18, 'tel': '110'}
]

print(allstudents[0]['dog']['color'])

3.查 - 獲取字典的值

1) 獲取key對應(yīng)的值: 字典[key] - 獲取字典中指定key對應(yīng)的值

注意: 如果key不存在志珍,會報(bào)KeyError

dog1 = {'name': '大黃', 'type': '中華田園犬', 'color': 'yellow', 'age': 3}
print(dog1['type'])

print(dog1['gender']) # KeyError: 'gender'

獲取key對應(yīng)的值:

字典.get(key) - 獲取字典中指定key對應(yīng)的值, 如果key值不存在返回默認(rèn)值None

字典.get(key, 默認(rèn)值) - 獲取字典key對應(yīng)的值,如果key不存在返回指定的默認(rèn)值

None是python中的關(guān)鍵字,表示數(shù)據(jù)為空或者沒有的意思

print(dog1.get('color'))
print(dog1.get('gender'))
print(dog1.get('gender', '公狗'))

2)遍歷

直接遍歷字典拿到是key

dog1 = {'name': '大黃', 'type': '中華田園犬', 'color': 'yellow', 'age': 3}
print('===========遍歷===========')
for key in dog1:
print(key, dog1[key])

遍歷字典選第一種方法垛叨,后面的方法要看得懂

print('===========遍歷2===========')
print(dog1.values())
for value in dog1.values():
print(value)

print('===========遍歷3===========')
for key in dog1.keys():
print(key)

print('===========遍歷4===========')
print(dog1.items())
for key, value in dog1.items():
print(key, value)

4.增/改 - 添加鍵值對

字典[key] = 值 - 當(dāng)key不存在的時(shí)候就是添加鍵值對伦糯;當(dāng)key存在的時(shí)候,就是修改key對應(yīng)的值

film = {'name': '流浪地球', '主演': '吳京', 'time': '2019-2-5'}
film['票房'] = '40億'
print(film)

film['time'] = '2019-2-6'
print(film)

film.setdefault('a', 10)
print(film)

字典.setdefault(key, value) - 只能條件鍵值對嗽元,不能修改

film.setdefault('name', '戰(zhàn)狼2')
print(film)

5.刪

del 字典[key] - 刪除字典中key對應(yīng)的鍵值對, 如果key不存在會報(bào)錯(cuò)

film = {'name': '流浪地球', '主演': '吳京', 'time': '2019-2-5'}
del film['time']
print(film)

字典.pop(key) - 從字典中取出key對應(yīng)的值敛纲,結(jié)果是key對應(yīng)的值

name = film.pop('name')
print(film, name)

6.相關(guān)運(yùn)算

只支持比較運(yùn)算符

print({'a': 10, 'b': 20} == {'b': 20, 'a': 10}) # True

in / not in

key in 字典 - 判斷字典中是否存在某個(gè)key對應(yīng)的鍵值對

student = {'name': '小明', 'age': 20, 'tel': '16362738493'}
print('小明' in student) # False
print('name' in student) # True

len(), max(), min()

dict() - 本身是一個(gè)序列,序列中元素是小序列剂癌,小序列必須有且只有2個(gè)元素淤翔,而且這個(gè)2個(gè)元素中的第一個(gè)元素是不可變的

注意:取最大值最小值是取key的最大值和最小值;字典轉(zhuǎn)列表/元祖的時(shí)候,是將字典的key取出來作為列表/元祖的元素

print(len(student))
print(max(student))
print(dict(['cb', ['a', 100], [1000, [1]] ]))
print(list(student))

7.相關(guān)方法

1)字典.clear() - 清空字典

student.clear()
print(student)

2)字典.copy() - 復(fù)制字典的內(nèi)容佩谷,產(chǎn)生一個(gè)新的字典

student = {'name': '小明', 'age': 20, 'tel': '16362738493'}
student1 = student.copy()
student1['name'] = '小花'
print(student)

3) dict.fromkeys(序列,值) - 創(chuàng)建一個(gè)新的字典旁壮,將序列中的元素作為新字典的key,指定的值作為每個(gè)key對應(yīng)的值

new_dict = dict.fromkeys(['name', 'age', 'gender'], None)
print(new_dict)

person_keys = ['name', 'age', 'gender']
person1 = dict.fromkeys(person_keys, None)
person2 = dict.fromkeys(person_keys, None)

4) 字典1.update(字典2) - 將字典2中的鍵值對添加到字典1中

dict1 = {'a': 10, 'b': 20, 'z': 100}
dict1.update({'c': 30, 'b': 200})
print(dict1)

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市谐檀,隨后出現(xiàn)的幾起案子抡谐,更是在濱河造成了極大的恐慌,老刑警劉巖桐猬,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件童叠,死亡現(xiàn)場離奇詭異,居然都是意外死亡课幕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門五垮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來乍惊,“玉大人,你說我怎么就攤上這事放仗∪笠铮” “怎么了?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵诞挨,是天一觀的道長莉撇。 經(jīng)常有香客問我,道長惶傻,這世上最難降的妖魔是什么棍郎? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮银室,結(jié)果婚禮上涂佃,老公的妹妹穿的比我還像新娘励翼。我一直安慰自己,他們只是感情好辜荠,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布汽抚。 她就那樣靜靜地躺著,像睡著了一般伯病。 火紅的嫁衣襯著肌膚如雪造烁。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天午笛,我揣著相機(jī)與錄音惭蟋,去河邊找鬼盅弛。 笑死慰照,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的圾旨。 我是一名探鬼主播与涡,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼惹谐,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了驼卖?” 一聲冷哼從身側(cè)響起氨肌,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎酌畜,沒想到半個(gè)月后怎囚,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡桥胞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年恳守,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片贩虾。...
    茶點(diǎn)故事閱讀 38,643評論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡催烘,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出缎罢,到底是詐尸還是另有隱情伊群,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布策精,位于F島的核電站舰始,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏咽袜。R本人自食惡果不足惜丸卷,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望询刹。 院中可真熱鬧及老,春花似錦抽莱、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至僧鲁,卻和暖如春虐呻,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背寞秃。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工斟叼, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人春寿。 一個(gè)月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓朗涩,卻偏偏與公主長得像,于是被迫代替她去往敵國和親绑改。 傳聞我的和親對象是個(gè)殘疾皇子谢床,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,509評論 2 348

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

  • 【因果】 山神斟酌片刻道:你若有疑慮,問便是了厘线。 八目雙膝跪地识腿,手臂環(huán)抱,懷中空無一物造壮,面上泫然欲泣卻又疑惑萬分渡讼。...
    你親愛的安娜大姐姐閱讀 346評論 0 0
  • 一、學(xué)習(xí)與實(shí)踐 1.付出不亞于任何人的努力 2.要謙虛耳璧,不要驕傲 3.要每天反省 4.活著成箫,就要感謝 5.積善行,...
    Samshaobin閱讀 126評論 0 0
  • 收拾是苦的 這是我對收拾之前的印象旨枯,為什么會認(rèn)為是苦的蹬昌?小時(shí)候,媽媽會經(jīng)常因?yàn)槲覀冞@些孩子們把家里搞亂了罵我們召廷,大...
    秀琴sukin閱讀 583評論 4 3