1 字符串(Strings)
- 函数
len(str)
,返回str长度 - 用
for
循环遍历字符串,例如:1
2
3fruit = 'banana'
for letter in fruit:
print letter - 用
[n:m]
来选择字符串的一个片段,包含下标为n
的字符,但不包括下标为m
的字符,例如:1
2
3
4
5s = 'Monty Python'
print s[0:4] # 打印出"Mont"
print s[6:20] # 打印出"Python",这表明可以索引过度
print s[:2] # 打印出"Mo"
print s[8:] # 打印出"thon" in
是一个逻辑运算符,例如:1
2
3fruit = 'banana'
if 'nan' in fruit:
...- 比较运算符
==
、>
、<
适用于字符串 - 函数
lower()
:返回全部小写字符串
函数upper()
:返回全部大写字符串
例如:1
2print aaa = 'Hello Bob'.lower() # 打印出"hello bob"
print bbb = 'Hello Bob'.upper() # 打印出"HELLO BOB" - 查询更多内置函数
或者访问 https://docs.python.org/2/library/stdtypes.html#string-methods - 函数
find(str)
:返回第一次出现字符串片段的位置,没有找到返回-11
print 'banana'.find('z') # 打印出“-1”
- 函数
replace(str1,str2)
:1
2
3greet = 'Hello Bob'
print nstr = greet.replace('Bob','Jane') # 打印出“Hello Jane”
print nstr = greet.replace('o','X') # 打印出“HellX BXb” - 函数
strip()
:移除字符串首尾的空白(包括空格、制表符和换行符)1
2
3
4greet = ' Hello Bob '
print greet.lstrip() # 打印出“Hello Bob ”
print greet.rstrip() # 打印出“ Hello Bob”
print greet.strip() # 打印出“Hello Bob” - 函数
startwith(str)
:1
2
3line = 'Please have a nice day'
line.startwith('Please') # 返回True
line.startwith('p') # 返回False2 文件(Files)
- 函数
open()
:handle = open(filename,mode)
,其中mode
默认为r
注意:需要把文件和python代码放在同一个文件夹里1
2
3
4
5
6
7fhand = open('mbox.txt')
# 按行读取文本
for line in fhand:
print line # 读取文件的每一行
# 读取整个文本
inp = fhand.read() # 将文件一次性读取
print len(inp) # 打印出文件mbox.txt总计字符数3 列表(Lists)
- 列表的元素不要求是同一类型的。
列表可以嵌套列表。 - 函数
range(int)
:生成列表,例如:1
print range(4) # 打印出“[0,1,2,3]”
- 利用
+
连接两个列表,例如:1
2
3
4a = [1,2,3]
b = [4,5,6]
c = a + b
print c # 打印出“[1,2,3,4,5,6]” - 函数
append(元素)
:在列表的末尾增加一个元素,例如:1
2
3stuff = list() # 生成一个空列表,等价于“stuff = []”
stuff.append('book')
print 'book' in stuff # 打印出“True” - 函数
pop()
:取出列表中指定下标的元素(默认为最后一个),例如:1
2
3
4
5lst = [1, 82, -6, 4, 3, 8]
print lst.pop() # 打印出“8”
print lst # 打印出“[1, 82, -6, 4, 3]”
print lst.pop(3) # 打印出“4”
print lst # 打印出“[1, 82, -6, 3]” - 函数
sort()
:将列表本身从小到大排序,例如:1
2
3nums = [3,41,12,9]
nums.sort() # 将列表nums排序
print nums # 打印出“[1,9,12,41]” - 列表的一些内置函数
1
2
3
4
5
6nums = [3,41,12,9,74,15]
print len(nums) # 打印出“6”
print max(nums) # 打印出“74”
print min(nums) # 打印出“3”
print sum(nums) # 打印出“154”
print sum(nums)/len(nums) # 打印出“25” - 函数
split()
:把一个字符串分成单独的单词列表,并且把原字符串中的空白字符丢掉。split()
函数有一个可选参数,可以指定特定字符作为单词之间的界限。
函数list()
:把一个字符串分成字符列表1
2
3
4
5
6
7abc = 'With three words'
stuff1 = abc.split()
print stuff1 # 打印出“['With','three','words']”
# 有参数的split()
bcd = 'With;three;words'
stuff2 = bcd.split(';')
print stuff2 # 打印出“['With','three','words']” - 列表的引用
例:
(a)(b)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20# List reference problem
a = [5, 3, 1, -1, -3, 5]
b = a
b[0] = 0
print a
print b
###################################################
# Result
# [0, 3, 1, -1, -3, 5]
# [0, 3, 1, -1, -3, 5]
###################################################
# Explanation
# The assignment b = a created a second reference to a.
# Setting b[0] = 0 also mutated the list that both
# a and b reference. As a result, a[0] == 0.
# See the Programming Tips videos for a more detail
# explanation and examples1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17# List reference problem
a = [5, 3, 1, -1, -3, 5]
b = list(a)
b[0] = 0
print a
print b
###################################################
# Result
# [5, 3, 1, -1, -3, 5]
# [0, 3, 1, -1, -3, 5]
###################################################
# Explanation
# The assignment b = list(a) created a copy of the list a.
# Setting b[0] = 0 only mutated the copy of the list, not
# the original list. As a result, a[0] == 5. - 函数
index()
:返回元素在列表中的下标。例:1
2lst = [1, 82, -6, 4, 3, 8]
print lst.index(8) # 打印出“5” - 在遍历一个 list 时,千万不要从里面删除东西,如果需要删除东西,记录下你想要删除的东西,并随后删除它们。例:运行结果为:
1
2
3
4
5
6
7
8# 删除列表 numbers 中的所有奇数
numbers = [1, 7, 2, 34, 8, 7, 2, 5, 14, 22, 93, 48, 76, 15, 7]
def remove_odd(numbers):
for num in numbers:
if num % 2 == 1:
numbers.remove(num)
remove_odd(numbers)
print numbers
[2, 34, 8, 7, 2, 14, 22, 48, 76, 7]
这将导致 Python 运行混乱解决方案:另:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17# remove_odd3将要删除的元素放在一个列表中,在循环后删除它们
def remove_odd3(numbers):
remove = []
for num in numbers:
if num % 2 == 1:
remove.append(num)
for num in remove:
numbers.remove(num)
# remove_odd4将要保留的元素放在一个新的列表中,从而代替原来的列表
def remove_odd4(numbers):
newnums = []
for num in numbers:
if num % 2 == 0:
newnums.append(num)
return newnums1
2
3
4
5
6
7
8
9# remove_odd2的错误是:当列表删除一个元素后,该元素后面的所有元素的下标都会减 1(即向前一位),而不是不变
def remove_odd2(numbers):
remove = []
for num in numbers:
if num % 2 == 1:
remove.append(numbers.index(num))
for idx in remove:
numbers.pop(idx)
4 字典(Dictionaries)
- 字典是无序的(列表是有序的)。例如:
1
2
3
4
5ddd = dict()
ddd['age'] = 21
ddd['course'] = 182
print ddd
# 可能打印出“{'course':182,'age':18}”,可能打印出“{'age':18,'course':182}” - 函数
get(键,默认值)
:如果键出现在字典中,那么它会返回此键对应的值。 如果键不在字典中, 返回事先给定的默认值。 例如:1
counts[name] = counts.get(name,0) + 1
- 用
for
循环遍历字典,例如:1
2
3counts = {'chuck':1, 'fred':42, 'jan':100}
for key in counts:
···5 元组(Tuples)
- 元组是不可变的(和字符串相似)。
- 构造临时变量的时候,元组比列表更合适。
- 元组可以出现在赋值语句的左侧。当左侧是一个序列时,一次可以为多个变量赋值。
- 函数
items()
:将字典转化为元组的列表。例如:1
2
3
4
5
6
7d = dict()
d['cwen'] = 4
d['csev'] = 2
tup = d.items()
print tup # 打印出“[('cwen',4),('csev',2)]”
tup.sort() # 根据键排序
print tup # 打印出“[('csev',2),('cwen',4)]” - 比较运算符适用于元组。Python从每个序列的第一个元素开始比较,如果它们相等,继续比较下一个元素,以此类推,直到找到不同的元素。
- 函数sorted():根据键排序,但不改变原始的序列。例如:
1
2
3
4
5
6
7
8
9
10
11
12'a':10, 'b':1, 'c':22} d = {
d.items()
[('a', 10), ('c', 22), ('b', 1)]
sorted(d.items()) t =
t
[('a', 10), ('b', 1), ('c', 22)]
for k, v in sorted(d.items()):
print k, v
...
a 10
b 1
c 22 - Sort by values: 构造一个元组的列表,每项为(value,key),然后排序。
- 方法一。例如:
1
2
3
4
5
6c = {'a':10, 'b':1, 'c':22}
tmp = list()
for k, v in c.items():
tmp.append((v, k))
tmp.sort(reverse=True)
print tmp # 打印出“[(22, 'c'), (10, 'a'), (1, 'b')]” - 方法二(Even shorter version)。例如:
1
2c = {'a':10, 'b':1, 'c':22}
print sorted([(v, k) for k,v in c.items()]) # 打印出“[(1, 'b'), (10, 'a'), (22, 'c')]”
- 方法一。例如: