目錄
- 迭代器
- 三元表示式
- 列表推導式
- 字典生成器
- 拉鍊函式
迭代器
可迭代物件: 只要擁有iter方法的物件就是可迭代物件,下面的除了前兩個,從字串開始都是可迭代物件
height = 180 #整型
salary = 3.2 #浮點型
name = 'nick' #字串
hobby_list1 = ['run','read'] #列表
hobby_tup = ('run','read') #元組
info_dict1 = {'name':'nick','weight':140} #字典
hobby_set = {'read','run','run'} #集合
在後面加點,然後打一個iter再按Tab鍵就能出來_iter_
列表使用iter
hobby_list = ['run','read']
hobby_list_iter = hobby_list.__iter__() #把列表變成可迭代物件
print(hobby_list_iter.__next__()) ##輸出run
print(hobby_list_iter.__next__()) ##輸出read
##再多輸出一行就會報錯
字典使用iter
info_dict = {'name':'nick','weight':140}
info_dict_iter = info_dict.__iter__()
print(info_dict_iter.__next__()) ##輸出name
print(info_dict_iter.__next__()) ##輸出weight
###改成value就會是nick、140
迭代器物件:擁有__iter__方法——>可迭代物件擁有__next__方法的才是迭代器物件,檔案本身就是迭代器物件
- 先加iter變成迭代器物件,再加next變成迭代器
下面這個就是使用迭代器後,就不用使用for進行for i in xx給他列出
# 這一段程式碼如果用c寫,就是for迴圈的原理
hobby_list2 = ['run','read']
hobby_list2_iter = hobby_list2.__iter__()
while True:
try:
print(hobby_list2_iter.__next__())
except:
break
三元表示式
dog_name = 'fenggou'
# 不推薦使用,你以後寫程式,程式是越容易看懂越好,而不是寫成一行,讓別人說你是傻逼
print('遠離他') if dog_name == 'fenggou' else print('盤他')
列表推導式
[i*2 for i in range(100)]
print(lis) ###輸出0~198(而且是偶數)
# 千萬不要寫這樣的東西,否則真的會被罵傻逼
lis1 = [i * 2 if i > 50 else i for i in range(100)]
print(lis1) ###輸出前五十一個是0到50,其餘是兩倍
字典生成器
dic= dict.fromkeys([1,2,3,4],2)###有關fromkeys的使用忘了可以再看看
print(dic2)
keys = ['L','Y','M']
default_value = []
dic1 = dict.fromkeys(keys,default_value)###default_value的東西每個key拿到的一樣
print(dic1)
default_value.append(1000)
print(dic1)
dic2 = {i:i**2 for i in range(10)}
print(dic)
#####分別輸出
{1: 2, 2: 2, 3: 2, 4: 2}
{'L': [], 'Y': [], 'M': []}
{'L': ['1000'], 'Y': ['1000'], 'M': ['1000']}
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
拉鍊函式
# 拉鍊函式
res = zip('abcd',[1,2,3,4])
print(res) ##輸出<zip object at 0x000002575EFAA040>
dic = dict() #先定義一個空字典
for k,v in res:
dic[k] = v #res指向值放進去
print(dic)
####一個式子把上面的寫完
print({k:v for k,v in zip('abcd',[1,2,3,4])})