内置函数和运算符关键字#
内置函数#
range#
- 生成器是一种特殊类型的函数
- 他会一个个的生成信息
数据,而不是一次性将所有东西生成到内存中
#range函数,返回一个range对象(可迭代对象)【是一个生成器】
>>> type(range(10))
<class 'range'>
#只可以迭代0,1,2
>>> for num in range(3):
... print(num)
...
0
1
2
#只可以迭代[3,6) 左边包括右边不包括
>>> for num in range(3,6):
... print(num)
...
3
4
5
#步长2表示每次增加2
>>> for num in range(3,10,2):
... print(num)
...
3
5
7
9
#将生成器装换为列表
>>> list(range(3,6))
[3, 4, 5]enumerate#
>>> word='abcde'
>>> for letter in word:
... print(word[index_count])
... index_count+=1
...
a
b
c
d
e
#使用内置行数,获取可遍历对象的 下标和内容(以元组形式表示)
>>> word='abcde'
>>> for item in enumerate(word):
... print(item)
...
(0, 'a')
(1, 'b')
(2, 'c')
(3, 'd')
(4, 'e')
#使用enumerate并在迭代时将(下标,内容)这样的元组解包
>>> word='abcde'
>>> for index,letter in enumerate(word):
... print(f'index={index},letter={letter}')
...
index=0,letter=a
index=1,letter=b
index=2,letter=c
index=3,letter=d
index=4,letter=e
>>> type(enumerate(word))
<class 'enumerate'>zip#
这也是一个生成器
>>> mylist1=[1,2,3]
>>> mylist2=['a','b','c']
>>> for item in zip(mylist1,mylist2):
... print(item)
...
(1, 'a')
(2, 'b')
(3, 'c')
>>> zip(mylist1,mylist2)
<zip object at 0x7ff1e4def480>
>>> type(zip(mylist1,mylist2))
<class 'zip'>
#三个组合
>>> mylist1=[1,2,3]
>>> mylist2=['a','b','c']
>>> mylist3=[3.4,'haha',2.0]
>>> for item in zip(mylist1,mylist2,mylist3):
... print(item)
...
(1, 'a', 3.4)
(2, 'b', 'haha')
(3, 'c', 2.0)
#zip只能压缩到最短的那个列表
>>> mylist1=[1,2,3]
>>> mylist2=['a','b']
>>> mylist3=[3.4,'haha',2.0,5]
>>> for item in zip(mylist1,mylist2,mylist3):
... print(item)
...
(1, 'a', 3.4)
(2, 'b', 'haha')
#list函数把zip的结果放进转化成列表
>>> list(zip(mylist1,mylist2,mylist3))
[(1, 'a', 3.4), (2, 'b', 'haha')]
#解包
>>> for a,b,c in zip(mylist1,mylist2,mylist3):
... print(f'a={a}')
...
a=1
a=2
#解包的时候,元组的元素个数一定要一致,否则会报错
>>> for a,c in zip(mylist1,mylist2,mylist3):
... print(f'c={c}')
...
Traceback (most recent call last):
File "<python-input-56>", line 1, in <module>
for a,c in zip(mylist1,mylist2,mylist3):
^^^
ValueError: too many values to unpack (expected 2)运算符关键字#
#列表
>>> 'x' in [1,2,3]
False
>>> 'x' in ['x','y','z']
True
>>> 2 in [2.0,1]
True
#字符串
>>> 'a' in 'a world'
True
#字典
>>> 'mykey' in {'mykey':123}
True
>>> 123 in {'mykey':123}
False字典视图对象:#
| 方法 | 返回类型 | 中文常叫法 |
|---|---|---|
d.keys() | dict_keys | 字典键视图 |
d.values() | dict_values | 字典值视图 |
d.items() | dict_items | 字典键值对视图 |
>>> d={'mykey':345,'LiKan':12}
>>> d.keys()
dict_keys(['mykey', 'LiKan'])
>>> mykeys=d.keys()
>>> mykeys
dict_keys(['mykey', 'LiKan'])
>>> d['new']=54
>>> mykeys
dict_keys(['mykey', 'LiKan', 'new'])
#in的使用
>>> d={'mykey':345,'LiKan':12}
>>> 345 in d.keys()
False
>>> 345 in d.values()因为 d.keys() 返回的是字典视图(dict_keys),它不是复制一份数据,而是指向原字典的一个动态窗口
#如果你想要固定不变的副本:
>>> o_mykeys=mykeys
>>> d['new_2']=54
#一样都是视图
>>> o_mykeys
dict_keys(['mykey', 'LiKan', 'new', 'new_2'])
#转换为列表后就不是视图了,不是动态窗口也不动态跟踪了
>>> o_mykeys=list(mykeys)
>>> o_mykeys
['mykey', 'LiKan', 'new', 'new_2']
>>> d['new_3']=99
>>> o_mykeys
['mykey', 'LiKan', 'new', 'new_2']
>>> mykeys
dict_keys(['mykey', 'LiKan', 'new', 'new_2', 'new_3'])