Python学习笔记(三) Python高级特性

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]

猜你喜欢

转载自blog.csdn.net/winterking3/article/details/81359642