Python代码编程基础
字符串
str.[]实现根据下标定位实现对元素的截取
for 循环可以实现遍历
while 循环可以在实现遍历的同时实现对某一下标数值的修改
字符串前加 r 可以实现对字符串的完整内容输出
字符串前加 f 可以实现对字符串内{}中包裹内容的格式化输出,仅在 v3.6 之后可用
对字符串使用*****、**+**实现字符串多次打印与字符串拼接
列表
列表定义
list = [“1”, “2”, “3”, 31, 431, “fengjiawei 最帅”, [“列表嵌套列表”]]
list.sort() 对列表进行排序,无返回值
list.sort(reverse = True) 对列表进行逆排序,无返回值
sorted(list) 直接返回排序后的列表
列表增
list.append(object)表示在列表最后加上某一对象,可以是列表也可以是别的元素类型
list1.extend(list2)表示将 list2 里的元素扩展到 list1 中去,list2 只能是列表
list.insert(1,object)表示在下标为 1 的位置加上 object
列表删
list.remove(列表中的某一个元素)表示删除列表中找到的符合该元素名称的第一个元素
list.pop()表示弹出列表中的最后一个元素,返回值为弹出的元素
del list[下标] 表示删除列表中的某一个元素
列表改
list[下标] = xxxx 表示直接对列表某一下标进行修改
列表查
in/not in
元素 in list 如果有返回 true,否则返回 false
list.index(要查找的元素,查找开始的位置,查找结束的位置+1)返回查找的第一个元素下标
# myList = ["a", "b", "c", "d"]
# for i, x in enumerate(myList): # 转换为枚举类型,使用枚举函数,同时拿到列表中的下标和元素内容
# print(i, x)
列表推导式
列表推导式(List Comprehension)是一种语法结构,用于在Python中创建新的列表。语法格式如下:
expression for item in iterable if condition
expression
是一个表达式,用于定义新列表中的元素。item
是可迭代对象中的每个元素。iterable
是一个可迭代对象,例如列表、元组、字符串等。condition
是一个可选的条件表达式,用于筛选满足条件的元素。
# 生成一个包含 1 到 10 的平方数的列表
squares = [x**2 for x in range(1, 11)]
print(squares) # 输出:[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]# 生成一个只包含偶数的列表
even_numbers = [x for x in range(1, 11) if x % 2 == 0]
print(even_numbers) # 输出:[2, 4, 6, 8, 10]# 生成一个将字符串列表中的元素转换为大写的列表
words = ['apple', 'banana', 'cherry']
upper_words = [word.upper() for word in words]
print(upper_words) # 输出:['APPLE', 'BANANA', 'CHERRY']
元组
元组最大的特性就是无法进行修改
tuple = (“avr”, “nn”, “faafa”, 2 , 1)
元组增
tup3 = tup1+tup2 进行元组连接
元组删
del tuple 是删除整个元组而不是删除元组内的元素
元组改
元组内的元素无法进行修改
元组查
tup[下标]访问对应元组元素
字典
字典是键值对的集合
dic{“key1” : “value1”, “key2” : “value2”}
字典中直接访问不存在的键会报错,如 dic[“key3”]
使用 get 方法访问不存在的值不会报错,会返回 None, 如 dic.get(“key3”)
还可以使用 get 方法设定不存在的键对应的值,如 dic.get(“key3”,“value3”)
值的注意的是,如果使用 get 方法得到原本的字典里相应的值了,那么 get 设定的值不会起作用,如 dic.get[“key1”,“value4”]返回值还是"value1"
字典增
直接增加相应的键值对即可
如 dic[“key3”] = “value3”
字典删
del 删除整个键值对或者直接删除整个字典
del dic[“key1”]删除第一个键值对
del dic 直接删除整个字典
dic.clear()清除整个字典,使 dic 变为空字典{}
字典改
直接将相应的 value 赋值给对应的键上面就行
字典查
# print(dic.keys()) # 得到所有的键(列表)
# print(dic.values()) # 得到所有的值(列表)
# print(dic.items()) # 得到所有的项(列表),每个键值对是一个元组# 遍历所有的值
# for key in info.keys():
# print(info[key])
# for key, value in info.items():
# print("key=%s,value=%s"%(key, value))
集合
set{1, 2, 3, 4}常用来进行集合相关的操作与 dic 类似,但不存储 value,key 不重复
set 是无序的,重复元素在 set 中被自动过滤,并且从小到大以顺序显示
s = set([1, 2, 3, 3, 5])
s 为{1, 2, 3, 5}
集合增
set.add(key)向集合增加元素
set.update(set1)更新集合,其实质就是将集合 set1 中的元素加入 set 中
集合删
set.remove(5)删除某一元素
set.pop()弹出元素,返回值为弹出的元素(最小,在最左边的元素)
set.clear()清除元素
del set 删除集合
集合改
没法改
集合查
for i in set:
print(i)
是否有序 | 是否可变类型 | |
---|---|---|
列表[] | 有序 | 可变类型 |
元组() | 有序 | 不可变类型 |
字典{} | 无序 | key不可变,val可变 |
集合{} | 无序 | 可变类型(不重复) |
函数
函数定义
def function()
全局变量与局部变量
函数内部是局部变量,外部是全局变量
优先使用函数内部局部变量,函数内部没有局部变量则使用全局变量,可以在变量前加上 global 关键字来使用全局变量
常见函数
bin(int/long)返回二进制数
upper(string)返回大写字符串
lower(string)返回小写字符
title(string)首字母大写
ord(string)返回 ASCII 码
匿名函数
lambda函数的特点包括:
- 只能包含一个表达式,不能包含多个语句。
- 不能有函数体,因此没有return语句,表达式的结果就是函数的返回值。
- 可以使用任意数量的参数,包括可选参数和默认参数。
- 可以将lambda函数赋值给一个变量,也可以直接调用lambda函数。
# 匿名函数只有一行,不需要函数体,基本格式为lambda arguments: expression
add = lambda x, y: x+y
print(add(3,2)) # 输出结果为5
dic = lambda : defaultdic
print(dic) # <function <lambda> at 0x000001E89DFF6F70>
dic = lambda x, y : defaultdic
print(dic(3,4)) # <class 'collections.defaultdict'>
Zip函数
zip()是一个Python的内置函数,可以将多个可迭代对象(列表、元组等)按照索引位置一一配对,然后返回一个新的迭代器。
其常用的操作有:
遍历多个可迭代对象
list1 = [1, 2, 3]
list2 = ['a', 'b', 'c']
for x, y in zip(list1, list2):
print(x, y) # 输出:1 a, 2 b, 3 c
创建字典
keys = ['name', 'age', 'gender']
values = ['Alice', 25, 'Female']
person_dict = dict(zip(keys, values))
print(person_dict) # 输出:{'name': 'Alice', 'age': 25, 'gender': 'Female'}
解压缩操作
pairs = [(1, 'a'), (2, 'b'), (3, 'c')]
numbers, letters = zip(*pairs)
print(numbers) # 输出:(1, 2, 3)
print(letters) # 输出:(a, b, c)# 实例
import nltk # 引入NLTK库
tagged_sents = nltk.corpus.brown.tagged_sents(tagset='universal')
# zip(*sent)生成的是一个可迭代的对象,其中将每个句子中的词与标签拆开分别组成了一对元组,再使用zip(*(zip(*sent)可以将多个句子中的词组合成一个二阶元组,标签也是。
sents, postags = zip(*(zip(*sent) for sent in tagged_sents))
文件
f = open("文件路径", "读取方式")
f.close()
文件读
f = open("xxx", "r")
f.readline() # 读一行,光标移动到下一行第一个字节
f.readlines() # 读所有行,按行为单位存储在列表里
文件写
f = open("xxx", "w")
f.write("xxxx") # 向文件内部写入
文件操作 OS
import os
# os.rename("test1.txt", "test3.txt") # 重命名
# os.remove("test3.txt") # 删除
# os.mkdir("张三") # 创建文件夹
# os.getcwd() # 获取当前目录
# os.chdir() # 改变目录
# os.removedirs("张三") # 删除当前目录
错误和异常
try:print("-----------test1----------")f = open("123.txt", "r") # 用只读模式打开了一个不存在的文件,报错print("-----------test2----------") # 这句代码不会执行print(num)
# except (IOError, NameError) as result: # 文件没找到,属于 IO 异常(输入输出异常),异常类型要被捕获,需要一致
# print("-----------test3----------") # 捕获异常后执行的语句except Exception as result: # 文件没找到,属于 IO 异常(输入输出异常),异常类型要被捕获,需要一致,Exception 可以承接任何异常print("-----------test3----------") # 捕获异常后执行的语句pass