Python学习笔记(四) 高级操作
- 切片
我们一般取元素是通过索引,如果要取多个元素就得循环,来看Python更强大的方法
现有一个list,取前三个元素
>>> items = ['a', 'b', 'c', 'd', 'e']
>>> items[0:3]
['a', 'b', 'c']
items[0:3]的意思是取出索引从0到3的元素,但不包括3 。然后看取从1到4
>>> items[1:4]
['b', 'c', 'd']
若从0开始,0可以省略
>>> items[:3]
['a', 'b', 'c']
前面说过list可以通过负索引倒着取值,那还可以这样
>>> items[-4:-1]
['b', 'c', 'd']
注意第一个数必须比第二个数小,不然取不到任何元素
现在我们创建一个0-99的list
>>> items = list(range(100))
取前10个数
>>> items[:10]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
前10个数中每2个取一个
>>> items[:10:2]
[0, 2, 4, 6, 8]
所有数,每5个取一个
>>> items[::5]
[0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]
切片还可以用来截取字符串
>>> '12345'[:3]
'123'
>>> '12345'[::2]
'135'
- 迭代
前面说过for循环,for…in…就是迭代,下面再举一些例子
>>> d = {'a': 1, 'b': 2, 'c': 3}
>>> for i in d:
... print(i)
...
a
c
b
这是迭代dict,拿到的只是key,因为dict是无序的,每次结果可能都不一样。
如果要迭代value,可以用for v in d.values();如果要同时迭代key和value,可以用for k, v in d.items()
>>> for v in d.values():
... print(v)
...
1
3
2
>>> for k,v in d.items():
... print('%s: %s' % (k,v))
...
a: 1
c: 3
b: 2
字符串也可以迭代
>>> for i in 'ABC':
... print(i)
...
A
B
C
那什么样的对象可以被迭代呢?可以判断对象是collections模块的Iterable类型
>>> from collections import Iterable
>>> isinstance('abc', Iterable)
True
>>> isinstance([1, 2, 3], Iterable)
True
>>> isinstance(123, Iterable)
False
---> Python学习笔记目录