1.切片
对于list和tuple,经常要取其中一部分元素,如果用循环取,太麻烦,可以用切片简化操作
myList = [1, 2, 3, 4, 5]
#表示,从索引0开始取,直到索引3为止,但不包括索引3, 输出 myList[0:3] = [1, 2, 3]
print("myList[0:3] = ", myList[0:3])
还有别的操作如下
myList = [1, 2, 3, 4, 5]
print("myList[0:3] = ", myList[0:3])
#如果第一个索引是0,还可以省略
print("myList[:3] = ", myList[:3])
#也可以从索引1开始,取出2个元素出来
print("myList[1:3] = ", myList[1:3])
#类似的,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片
print("myList[-3:-1] = ", myList[-3:-1])
#字符串也可以看出List,可以用切片操作,只是操作结果仍是字符串
theStr = 'abcdef'
print("str[1:3] = ", theStr[1:3])
myList[0:3] = [1, 2, 3]
myList[:3] = [1, 2, 3]
myList[1:3] = [2, 3]
myList[-3:-1] = [3, 4]
str[1:3] = bc
2.迭代
如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们称为迭代(Iteration)
在Python中,迭代是通过for … in来完成的
#list的for循环
names = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']
for thisName in names:
print(thisName)
#只要是可迭代对象,无论有无下标,都可以迭代,比如dict就可以迭代
users = {"winter": 30, "pig": 20, "mico": 1}
#默认情况下,dict迭代的是key
for key in users:
print(key)
#迭代value
for value in users.values():
print(value)
#同时迭代key和value
for name, age in users.items():
print("name = {}, age = {}".format(name, age))
#由于字符串也是可迭代对象,因此,也可以作用于for循环
for ch in "ABCD":
print(ch)
#Python内置的enumerate函数可以把一个list变成索引-元素对,这样就可以在for循环中同时迭代索引和元素本身
for index, value in enumerate(names):
print(index, value)
#上面的for循环里,同时引用了两个变量,在Python里是很常见的
for x, y in [(1, 1), (2, 4), (3, 9)]:
print(x, y)
运行结果如下:
Michael
Sarah
Tracy
Bob
Jack
pig
mico
winter
20
1
30
name = pig, age = 20
name = mico, age = 1
name = winter, age = 30
A
B
C
D
0 Michael
1 Sarah
2 Tracy
3 Bob
4 Jack
1 1
2 4
3 9
3.列表生成式
这个先了解下range()函数
range() 函数返回的是一个可迭代对象(类型是对象),而不是列表类型
语法如下
range(stop)
range(start, stop[, step])
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);
- stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5;
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1);
要生成[1x1, 2x2, 3x3, …, 10x10]
[x * x for x in range(1, 11)]
#[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
for循环后面还可以加上if判断,这样我们就可以筛选出仅偶数的平方
[x * x for x in range(1, 11) if x % 2 == 0]
#[4, 16, 36, 64, 100]