python学习

高级特性

代码越少越好!越简单越好!

切片(Slice)

根据索引取list或tuple的部分元素
list、tuple、字符串都可以使用切片

1
2
3
4
5
6
7
8
9
10

L = ['A','B','C','D','E']
print(L[0:3]) #从索引0开始,到索引3但不包括索引3
M = list(range(20))
print(M)
print(M[-4:-1]) #倒数第一个元素的索引是-1
print(M[:10:2]) #前10个数,每两个取一个
print(M[::5]) #所有数,每五个取一个
print(len(M))
print(M[len(M)-1])
['A', 'B', 'C']
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
[16, 17, 18]
[0, 2, 4, 6, 8]
[0, 5, 10, 15]
20
19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
#实现一个trim()函数,去除字符串首尾的空格
def (string):
if string[0] == ' ' and string[len(string)-1] == ' ':
return string[1:len(string)-1]
elif string[0] == ' ':
return string[1:]
elif string[len(string)-1] == ' ':
return string[0:len(string)-1]
else:
return string
print(trim(' ABCD '))
print(trim(' ABCD'))
print(trim('ABCD '))

#去掉所有空格
def trim2(string):
length = len(string)
start = -1
end = length - 1
return_str = []
while start < end:
start += 1
if string[start] == ' ':
continue
else:
return_str.append(string[start]) #序列转化字符串
return ''.join(return_str)
print('原字符串:" A B C DE "')
print('去掉所有空格: "%s%s'%(trim2(' A B C DE '),'"'))

#去除字符串前后任意多空格
def trim3(string):
length = len(string)
start = 0
end = length - 1
for i in range(length):
if string[start] == ' ':
start += 1
if string[end] == ' ':
end -= 1
if start > end:
break
return string[start:end+1]
print('去除字符串前后任意多空格:"%s%s'%(trim3(' A B C DE '),'"'))
ABCD
ABCD
ABCD
原字符串:"          A B  C DE   "
去掉所有空格: "ABCDE"
去除字符串前后任意多空格:"A B  C DE"

迭代(Iteration)

给定一个list或者tuple,通过for循环来遍历这个list或tuple,叫做迭代

1
2
3
4
5
6
7
8
9
10
#使用迭代查找一个list中最小和最大值,并返回一个tuple
def findMinAndMax(L):
max=min=None
for n in L:
if min==None or min>n:
min=n
if max==None or max<n:
max=n
return (min,max)
print(findMinAndMax([1,2,3,4,5,6]))
(1, 6)