一 字符串
成对的一个单引号或双引号(字符串内有相同的引号需加个 \ 作转义)。
成对的三个单引号或双引号,保留字符串的全部格式。
字符串相关函数:
求字符串长度,
len(str)
。字符串拼接,
+
。1
2
3
4例:
str1 = "hello"
str2 = str1 + "world"
print(str2)字符串重复,
*
,如str2 * 3
。成员运算符,
in
,判断一个字符串是否是另一个字符串的字串。1
2
3例:
name = "mike"
print("i" in name) #返回值为 true枚举字符串中每个字符
1
2for char in str
print(char)
- 字符串索引:字符串中的每个字符都有一个索引值。
正着从 0 依次加一;或倒着从 -1 依次减一。
切片
[start:finish:countBy]
。
[开始位置:结束位置的下一个值:计数参数],计数参数默认为 1。str[::-1]
则获得原字符串的逆序。
通过切片来赋给原变量来更改原字符串(不可以直接通过索引更改)。字符替换函数
str1.replace(old,new)
。字符查找函数
str1.find("x")
。字符切分
str1.split()
,无参数则按空格切分 。可以通过
dir(str)
来查看其他方法。
字符串比较:
根据 ASCII 比较。字符串格式化:
str.format(值)
,如print("hello {} world".format(you))
,会用 you 替换掉 {},输出为hello you world
。
在 {} 内可加格式控制内容:1
2
3
4
5
6print("PI is {:.4f}".format(math.pi)) #输出为四位小数。
{:9.4f} # 表示为占九个字符,小数部分四位。
{:e} # 用科学记数法输出。
{数字} # 用来选定后面的第几个值,相当于索引。
{key} # 后面传入的类字典形式的键值 .format("name":"Xioali","age":21)
format 值直接传字典进去在字典前加两个星号;直接传元组进去在元组前加一个星号。(字典或元组类型的对象)
str %(值1, 值2)
,如msg = "%d like playing %d" %(5, "game")
1
msg = "i am %(key1)s are %(key2)d" %{"key1":"xiaoli", "key2":21}
- 正则表达式:
二 列表与元组
1 列表
lst = [5.2,"hello",2]
,列表也支持索引操作,与字符串索引相同。列表与字符串相同与不同:
有关列表的方法:
列表赋值:
将一个被赋值的列表,赋给其他值,并不会生成一个新的,而是指向原来的。改成
b = a[:]
则可以重新开辟空间给变量 b。补充:赋值,浅拷贝,深拷贝。参考博文
赋值:变量初始化。
浅拷贝:不管是多么复杂的数据结构,浅拷贝只会拷贝第一层。
深拷贝:完全复制原变量的所有数据,在内存中生成一套完全一样的内容,我们对这两个变量中的一个进行任意修改都不会影响另一个变量。
查找:
lst.index(2)
返回第一个查找到值的下标,没有则抛出异常。排序:
sorted() 函数
,从小到大排序,不会改变原列表。lst.sort() 方法
,会改变原列表值。嵌套列表:
x = [[2,3,4],[67,5,44]]
,相当于二维数组。
例:这里的行直接用一个对象遍历了,只考虑列是哪个。列表解析或推倒:
对列表排序:
使用sort(key,reverse) 函数
1
2
3
4
5
6
7对列表中学生成绩排序(由姓名和成绩组成):
def f(a)
return a[1]
students.sort(key = f,reverse = True) #sort() 函数的两个格参数。
print(students)
2 元组
概念:
元组赋值:
函数与元组:返回的
return max,min
为元组。DSU 模式:
装饰,排序,反装饰。
例:长单词排前面。
生成一个新的列表赋值(添加长度信息);排序中间转换;生成新列表赋值(忽略长度信息)。lambda 匿名函数:参考博文
1
2add = lambda x, y : x+y
add(1,2) #结果为3
三 字典与集合
1 字典
概念:由键和值组成。
创建访问字典:
字典运算符和方法:
例.用字典统计一个字符串中字符出现次数:
1
2
3
4
5
6
7
8
9
10
11s = "bjhebvjwbvevbek"
d = {} #生成一个空字典
for i in s: #遍历字符串
if i in d: #判断字符是否在字典中
d[i] = d[i] + 1 #在字典中,则通过索引对值加一
else
d[i] = 1 #不在字典中,则创建索引并赋值为一
print(d)例.统计文本中单词词频:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23f = open("C:\\Users\\XXX\\Desktop\\emma.txt") #注意转义
ws = {}
for line in f:
words = line.strip().split() #取每行(去掉首尾换行空格)
for word in words: #遍历每行中的每个字
if word in ws:
ws[word] = ws[word] + 1 #字典中按这个字索引将值加一
else:
ws[word] = 1
tj = [] #创建一个列表,将统计出的字典内容转为列表,好排序。
for word, freq in ws.items(): #遍历字典中的每项
tj.append((freq, word))
tj.sort(reverse = True) #对列表排序,升序
for freq,word in tj[:10]: #输出前十项
print(freq,word)
f.close()
2 集合
- 概念,创建添加与删除,集合运算符:
四 有关文件的操作
1 | 打开文件: |