Python 语言学习(下)

作者 Marlous 日期 2018-09-05
Python 语言学习(下)

一 字符串

  1. 成对的一个单引号或双引号(字符串内有相同的引号需加个 \ 作转义)。

  2. 成对的三个单引号或双引号,保留字符串的全部格式。

  3. 字符串相关函数:

  • 求字符串长度,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
    2
    for char in str
    print(char)
  1. 字符串索引:字符串中的每个字符都有一个索引值。
    正着从 0 依次加一;或倒着从 -1 依次减一。
    字符串中索引值
  • 切片 [start:finish:countBy]
    [开始位置:结束位置的下一个值:计数参数],计数参数默认为 1。str[::-1] 则获得原字符串的逆序。
    通过切片来赋给原变量来更改原字符串(不可以直接通过索引更改)。

  • 字符替换函数 str1.replace(old,new)

  • 字符查找函数 str1.find("x")

  • 字符切分 str1.split() ,无参数则按空格切分 。

  • 可以通过 dir(str) 来查看其他方法。

  1. 字符串比较:
    根据 ASCII 比较。

  2. 字符串格式化:

  • str.format(值) ,如 print("hello {} world".format(you)) ,会用 you 替换掉 {},输出为 hello you world

在 {} 内可加格式控制内容:

1
2
3
4
5
6
print("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. 正则表达式:
    正则表达式概念
    正则表达式示例

二 列表与元组

1 列表

  1. lst = [5.2,"hello",2] ,列表也支持索引操作,与字符串索引相同。

  2. 列表与字符串相同与不同:
    列表与字符串相同与不同

  3. 有关列表的方法:
    有关列表的方法

  4. 列表赋值:

  • 将一个被赋值的列表,赋给其他值,并不会生成一个新的,而是指向原来的。改成 b = a[:] 则可以重新开辟空间给变量 b。
    列表赋值

  • 补充:赋值,浅拷贝,深拷贝。参考博文
    赋值:变量初始化。
    浅拷贝:不管是多么复杂的数据结构,浅拷贝只会拷贝第一层。
    深拷贝:完全复制原变量的所有数据,在内存中生成一套完全一样的内容,我们对这两个变量中的一个进行任意修改都不会影响另一个变量。

  1. 查找:lst.index(2) 返回第一个查找到值的下标,没有则抛出异常。

  2. 排序:sorted() 函数 ,从小到大排序,不会改变原列表。lst.sort() 方法 ,会改变原列表值。

  3. 嵌套列表:x = [[2,3,4],[67,5,44]] ,相当于二维数组。
    例:这里的行直接用一个对象遍历了,只考虑列是哪个。
    嵌套列表

  4. 列表解析或推倒:
    列表解析或推倒

  5. 对列表排序:
    使用 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 元组

  1. 概念:
    元组概念

  2. 元组赋值:
    元组赋值

  3. 函数与元组:返回的 return max,min 为元组。
    函数与元组

  4. DSU 模式:
    装饰,排序,反装饰。
    例:长单词排前面。
    生成一个新的列表赋值(添加长度信息);排序中间转换;生成新列表赋值(忽略长度信息)。
    DSU 模式
    直接而用 lambda 函数

  5. lambda 匿名函数:参考博文

    1
    2
    add = lambda x, y : x+y
    add(1,2) #结果为3

三 字典与集合

1 字典

  1. 概念:由键和值组成。

  2. 创建访问字典:
    创建字典

  3. 字典运算符和方法:
    字典运算符和方法

  4. 例.用字典统计一个字符串中字符出现次数:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    s = "bjhebvjwbvevbek"

    d = {} #生成一个空字典

    for i in s: #遍历字符串
    if i in d: #判断字符是否在字典中
    d[i] = d[i] + 1 #在字典中,则通过索引对值加一
    else
    d[i] = 1 #不在字典中,则创建索引并赋值为一

    print(d)
  5. 例.统计文本中单词词频:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    f = 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. 概念,创建添加与删除,集合运算符:
    概念,创建添加与删除,集合运算符

四 有关文件的操作

1
2
3
4
5
6
7
8
9
10
11
12
打开文件:
f = open(filename,mode) # r 为读,w 为写

按行读取内容:
for line in f:
pass

关闭文件:
f.close()

写文件:
f.write(str)