文章目录
切片 Slice
[startWith : end : step]
切片适用于 list、tuple、string
startWith是包含,end则不包含注意:
切片是从左往右切的
如果用正索引开始,就要用 正索引 或 逆索引 结束,例如s[1:5] 或 s[1:-3]
!如果用逆索引开始,就要用 逆索引 结束(
s[-1:1]
这样只会返回空字符串,正确应该是s[-5:-1]
)
!逆索引记得不要弄颠倒了。(s[-1:-3]
这样只会返回空字符串,正确应该是s[-3:-1]
)
索引
| P | y | t | h | o | n |
0 1 2 3 4 5 # 从左往右,下标从0开始
-6 -5 -4 -3 -2 -1 # 从右往左,下标从-1开始
>>> s = 'Python'
>>> s[0]
'P'
>>> s[0:-1] # 结束索引不被截取
'Pytho'
>>> s[:5] # 起始索引可以省略不写,代表从第一位开始截取
'Pytho'
>>> s[0:] # 结束索引可以省略不写,代表截取至最后一位
'Python'
>>> s[:] # 等于复制了一整个
'Python'
>>> s[1:4]
'yth'
>>> s[1:-2]
'yth'
>>> s[-2:1] # 逆索引开始,不能以正索引结束
''
>>> s[-5:-2]
'yth'
>>> s[-2:-5] # 只能从左往右切
''
>>> l = list(range(100))
>>> l[10:20]
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
>>> l[10:20:3]
[10, 13, 16, 19]
>>> l[80::3]
[80, 83, 86, 89, 92, 95, 98]
>>> l[:10:3]
[0, 3, 6, 9]
>>> l[::10]
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]
>>> l[::-10]
[99, 89, 79, 69, 59, 49, 39, 29, 19, 9]
迭代 Iteration
判断是否迭代对象
可以用过 collections 的 Iterable 类型,用
isinstance()
判断一个对象是否是可迭代对象
from collections import Iterable
str = 'abc'
l = [1, 2, 3]
t = (1, 2, 3)
d = {
1: 1, 2: 2, 3: 3}
s = ({
1, 2, 3})
print(isinstance(str, Iterable)) # True
print(isinstance(l, Iterable)) # True
print(isinstance(t, Iterable)) # True
print(isinstance(d, Iterable)) # True
print(isinstance(s, Iterable)) # True
print(isinstance(123, Iterable)) # False 整数字面量不是可迭代对象
迭代 List 列表类型数据
s = 'abcdefg'
for value in s:
print(value, end=' ')
# Output:
a b c d e f g
# 可以通过 enumerate() 给string,list,tuple 等生成下标
s = 'abcdefg'
for i, value in enumerate(s):
print(i, value)
# Output:
0 a
1 b
2 c
3 d
4 e
5 f
6 g
l = ['a', True, (1, 2), 43]
for i, value in enumerate(l):
print(i, value)
# Output:
0 a