python哪些类型可以作为迭代器_python0.8-----set类型与迭代器
set:類似dict,是一組dict的集合,不存儲value。
本質(zhì):無序(沒有下標(biāo))無重復(fù)的元素的集合。
創(chuàng)建:
創(chuàng)建set需要一個list或者tuple或者dict作為輸入集合。重復(fù)元素在色中會被自動過濾。
s1=[1,2,3,4,5,6,1,2]
set(s1)={1,2,3,4,5,6} --表示》將列表轉(zhuǎn)化成set集合類型。
s2=(1,2,3,4,5,6,1,2)
set(s2)={1,2,3,4,5,6} --表示》將元組轉(zhuǎn)化成set集合類型。
s3={1:2,2:3,3:4}
set(S3)={1,2,3} ? ? ??--表示》將字典轉(zhuǎn)化成set集合類型。注意,只將字典的key轉(zhuǎn)為set集合的元素。
還有以下操作:
list(set1) ? ? ? ? ? ? ? ? ? ? ?--表示》將set集合類型轉(zhuǎn)化成列表類型。
tuple(set1) ? ? ? ? ? ? ? ? ? --表示》將set集合類型轉(zhuǎn)化成元組類型。
增:
可以添加重復(fù)元素,但是不會有效果。
set1.add(value) ?valu不可以是列表或者字典,一位列表或者字典是可變對象。
set1.update(value) 打碎插入,value必須是字符串,列表,元組,字典等可迭代類型。
刪:
set1.remove(value):刪掉集合set1里面的value大小的元素。
查:
只能通過遍歷查找元素:
for i in set1:
print(i)
交集和并集:
set1=set2 & set3 :把set2和set3的交集賦給set1。
set1=set2 ?| ?set3 :把set2和set3的并集賦給set1。
迭代器:
可迭代對象:可以直接作用于for循環(huán)的對象統(tǒng)稱為可迭代對象(iterable),例如:字符串,列表,元組,set集合,字典。
可以用isinstance()判斷對象是否為iterable對象。不過再調(diào)用isinstance之前應(yīng)該輸入:
from collections import Iterator
例如:
isinstance([],Iterable) 返回True,說明[]是可迭代對象
isinstance((),Iterable) 返回True
isinstance({},Iterable) ?返回True
isinstance("",Iterable) 返回True
isinstance((x for x in range(10)),Iterable) ?返回True,說明(x for x in range(10))是可迭代對象
可以直接作用于for的數(shù)據(jù)類型一般分為兩種:
1:集合數(shù)據(jù)類型,如:list,tuple,dict,set,string。
2:generator,包括生成器和帶yield的generator function。
迭代器(Iteratior對象):不但可以作用于for循環(huán),還可以被next()函數(shù)不斷調(diào)用,并返回下一個值,直到最后拋出一個異常stopIteration,表示無法繼續(xù)返回下個值的對象,這邊是迭代器。
可以用isinstance()函數(shù)判斷一個函數(shù)是否是Iterator對象,不過在此之前,要調(diào)用:from collection import Iterator。
isinstance((x for x in range(10)),Iterator) ?返回True,說明(x for x in range(10))是一個迭代器。
例如:
令k=(x for x in range(5)),則k就是一個迭代器。
next(k)=0
next(k)=1
next(k)=2
next(k)=3
next(k)=4
next(k)---因為迭代器內(nèi)容已經(jīng)訪問完了,會拋出異常->stopIteration
list,tuple,str,dict都可以轉(zhuǎn)化成為迭代器:
a=iter(list1) :把list1轉(zhuǎn)化為迭代器了,賦值給a。
b=iter(tuple1) :把tuple1轉(zhuǎn)化為迭代器了,賦值給b。
c=iter(str1) :把str1轉(zhuǎn)化為迭代器了,賦值給c。
d=iter(dict1) :把dict1轉(zhuǎn)化為迭代器了,賦值給d。
迭代器應(yīng)用實例:將input以'\n'表示結(jié)束標(biāo)志改成以'end'作為input的結(jié)束標(biāo)志。
endStr='end'
str=''
for line in iter(input,endStr)
str+=line+'\n'
print(str)
總結(jié)
以上是生活随笔為你收集整理的python哪些类型可以作为迭代器_python0.8-----set类型与迭代器的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 奔跑吧linux内核第二版 pdf下载(
- 下一篇: 安卓mvp框架(安卓mvp)