Python 【高级特性】
切片:获得str、list、tuple(它们共同点:都是有序的。而集合无序,字典中有特殊的键值对,则不可切片。)的连续的一段元素。 如何切片?需切片的对象[ a:b:c ] ,如list1[0:6:1]。
(1)[ a:b:]是半开放半封闭,读a不读b。
(2)a不写时,默认为0。
(3)c是读取步长。
1 l=["0","1","2",'3',"4"]
2
3 print(l[::]) # =print(l)、=print(l[:]),都是输出全部
4 print(l[-5:-1]) #同3
5 print("")
6
7 print(l[0:4:1])
8 print(l[0:4:2])
9 print("")
10
11 print(l[:-2]) # =print(l[0:3])
list()函数,功能相当于一个“强制类型转换”,将集合set、元组tuple、字符串str都转换为list列表类型。
1 set={"f","e","a","b"} 2 tuple=(1,6,7,10,25) 3 str="reading" 4 print(list(str)) 5 print(list(set)) 6 print(list(tuple))['r', 'e', 'a', 'd', 'i', 'n', 'g']
输出
['a', 'b', 'e', 'f']
[1, 6, 7, 10, 25]
enumerate ()函数,将可遍历的数据类型(如:set、tuple、list、str)中的数据组合为一个个“索引序列”。
1 set={"book","apple","food"}
2 print(enumerate(set))
3 print(list(enumerate(set)))
输出
<enumerate object at 0x000001EE02F28A20>
[(0, 'book'), (1, 'food'), (2, 'apple')]
迭代,通过for循环、while循环遍历元组tuple、列表list、字典dictionary的方法。
1 #list的迭代
2 l=[0,1,2,3,4,5]
3
4 for n in l:
5 print(n,end=" ")
6 print()
7
8 i=0
9 while i<len(l):
10 print(l[i],end=" ")
11 i+=1
12 print()
13
14
16 #dictionary的迭代
17
18 dic={1:"one",2:"two",3:"three",4:"four"}
19
20 for key,value in dic.items():
21 print(key,"—>",value,end=" ")
如何判断对象obj是否可迭代?引入from collections.abc import Iterable,使用 instance(obj,Iterable)函数,结果若为true,则是,反之则不是。
list、tuple、set、dictionary、字符串都是可迭代的。
对n的运算
列表生成式,一种生成列表的方法。格式:[f(n) for n in range、list1....]
1 print("-------------- 运算begin ----------------------")
2 list1=[2,4,6,8,10]
3 #want list2=[4,16,64,100],有2种方法
4
5 #(1)传统的 for循环
6 list2=[]
7 for n in list1:
8 m=n*n
9 list2.append(m)
10
11 print(list2)
12
13 #(2)列表生成式
14 print([n*n for n in list1]) #一行顶四行
15
16 print([n*100 for n in list1[2:4]])
17
18
19
20 print("-------------- 过滤begin ----------------------")
21
22 list1=[1,2,3,5,6,7,9,10]
23 #want list2={1,9,25,49,81},有2种方法
24
25 #(1)传统for循环
26 list2=[]
27 for n in list1:
28 if n%2!=0:
29 m=n*n
30 list2.append(m)
31 print(list2)
32
33 #(2)列表生成式
34 print([n*n for n in list1 if n%2!=0])
35
36
37 print("--------------两个字符串的组合begin ----------------------")
38
39 s1="abc"
40 s2="ABC"
41
42 #(1)for循环
43 s3=[]
44 for n in s1:
45 for m in s2:
46 t=n+m
47 s3.append(t)
48 print(s3)
49 print()
50
51 #(2)列表生成式
52 print([n+m for n in s1 for m in s2])
53
54
55 #用 列表生成式 打印计算机当前目录下所有的文件名和目录名
56 import os
57 list2=[d for d in os.listdir("f:\\")]
58 print(list2)
59
60
61 print("--------------lower()、isinstance() begin -----------------")
62 list4=["Book","Eraser",20,"Rude"]
63 print([i.lower() for i in list4 if isinstance(i,str)])