Python学习笔记(持续更新)

Python学习笔记

Python BIF与关键字

type()

>>> type(3.1e-10)
<class 'float'>

id()

查看变量的地址。

isinstance()

>>> isinstance(3.14, int)
False

assert

当条件为假时,程序自动崩溃,并抛出AssertionError的异常。

>>> assert 3 > 4
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
AssertionError

序列相关方法

len()

求序列(列表/元组/字符串)的长度。

max()/min()

求序列或参数集合的最大值/最小值,但必须保证数据类型统一

sum()

格式:sum(序列, <可选参数>)

效果:求序列的和,若有可选参数,则再加上该参数的值。

sorted()

排序。与list.sort()作用相同。

enumerate()

string = "i love cuc"
print(list(enumerate(string)))

结果为:[(0, 'i'), (1, ' '), (2, 'l'), (3, 'o'), (4, 'v'), (5, 'e'), (6, ' '), (7, 'c'), (8, 'u'), (9, 'c')]

zip()

a = [1, 30, 15, 17, 28]
b = [2, 76, 61]
print(list(zip(a, b)))

结果为:[(1, 2), (30, 76), (15, 61)]

列表相关方法与关键字

访问列表元素

访问单个元素,如:member[0]

列表切片(访问多个元素),如:

  • member[2:5](提取第2、3、4个元素)
  • member[:3](提取起始至第2个元素)
  • member[1:](提取第1个至末尾的元素)
  • member[:](获取列表的拷贝,并可用于member2 = member[:]

添加元素

list.append()

在列表的末尾追加一个新元素。

member = [1, 2, 3.14, [4, 0.1], 'abc']
member.append('defgh')
list.extend()

在列表的末尾追加一个列表

member.extend([0, 1])

结果为:[1, 2, 3.14, [4, 0.1], 'abc', 'defgh', 0, 1]

list.insert()

如,在列表的第0个位置添加一个元素(注意,如果第二个参数是列表,则将这个列表整体作为元素):

member.insert(0, ['new1', 'new2'])

结果为:[['new1', 'new2'], 1, 2, 3.14, [4, 0.1], 'abc', 'defgh', 0, 1]

删除元素

list.remove()

格式:list.remove(元素)

del

格式:del 列表名[索引](删除一个元素)或del 列表名(删除整个列表)

list.pop()
格式效果
无参数<返回值> = 列表名.pop()删除列表末尾元素,并将该元素返回
有参数<返回值> = 列表名.pop(列表索引值)删除列表指定索引的元素,并将该元素返回

其他常用功能

list.index()
list1 = [1, 2, 3]
list1 *= 3	# 复制三次
print(list1.index(2))	# 求2在列表中第一次出现时的索引号
print(list1.index(2, 2, 5))	# 求2在列表的2~5(不含5)个元素的范围内第一次出现时的索引号
list.reverse()

无参数,用于将列表翻转

list.sort()

将列表排序。无参数时表示升序排列,list.sort(reverse = True)表示降序排列。

字典相关方法

创建字典

直接赋值
dict1 = {1: 'a', 'agwege':3, 2.123: 3.12}
dict2 = {"Apple": "USA", "Xiaomi": "CHN", "Samsung": "KOR"}
dict()
dict2 = dict(Apple = "USA", Xiaomi = "CHN", Samsung = "KOR")

注意,赋值号左侧的命名需要符合变量的命名规范,如dict(1 = 'a', 2 = 'b')会报错。

dict.fromkeys()
dict3 = {}
dict3 = dict3.fromkeys((1, 2, 3), "number")
print(dict3)	# 结果:{1: 'number', 2: 'number', 3: 'number'}
dict3 = dict3.fromkeys((1, 2, 3), ("one", "two", "three"))
print(dict3)    # 结果:{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}

注意,只会创建一个新的字典,因此不能用这个函数来修改字典的值。

访问字典

直接通过索引访问

在字典中,访问不存在的键值会直接创建新的词条:

dict2["SONY"] = "JPN"
print(dict2)	# 结果:{'Apple': 'USA', 'Xiaomi': 'CHN', 'Samsung': 'KOR', 'SONY': 'JPN'}
dict.keys()

访问键值。(注意,该函数无实参。)

for eachKey in dict3.keys():
    print(eachKey)	# 结果:1↩︎2↩︎3↩︎
dict.values()

keys()同理。

dict.items()

于上同理。

for eachItem in dict3.items():
    print(eachItem)
    
# 结果:
# (1, 'number')
# (2, 'number')
# (3, 'number')
dict.get()

返回指定键值对应的值,如果键不在字典中返回默认值None或设置的默认值。

print(dict2.get("Xiaomi"))	# 结果:CHN
print(dict2.get("OPPO"))	# 结果:None(但并没有在字典中创建这一项)
print(dict2.get("OPPO", "Error!"))	# 结果:Error!
dict.setdefault()

dict.get()类似,但如果实参在字典中不存在,则添加该项。

a = {1: 'a', 2: 'b', 3: 'c'}
print(a.setdefault(2))  # 结果:b
print(a.setdefault(4))  # 结果:None
print(a)    # 结果:{1: 'a', 2: 'b', 3: 'c', 4: None}
print(a.setdefault(5, 'e')) # 结果:e
print(a)    # 结果:{1: 'a', 2: 'b', 3: 'c', 4: None, 5: 'e'}
dict.update()
b = {10: 'j'}
a.update(b)
print(a)    # 结果:{1: 'a', 2: 'b', 3: 'c', 4: None, 5: 'e', 10: 'j'}
dict.copy()

浅拷贝。

dict_b = dict_a.copy()	# 浅拷贝
dict_c = dict_a	# 深拷贝(二者地址相同)

删除元素

dict.clear()

无返回值,直接清空字典(注意避免使用dict = {}

dict.pop()dict.popitem()
  • dict.pop(key):给定键,返回(弹出)对应的值,同时字典中删除该项。
  • dict.popitem():无实参,返回(弹出)一个项,同时字典中删除该项。

集合相关方法

创建集合

创建集合时,均会自动去掉重复元素。

  • 直接创建:num = {4, 1, 4, 5, 4, 2, 2, 3}

  • 通过工厂函数set()set1 = set([1, 3, 2, 0, 2, 3])

  • 通过frozenset()创建不可变的集合(不可通过set.add()等改变集合内容):

    num2 = frozenset([1, 2, 3, 4, 5, 4, 3, 2, 1])
    print(num2)	# 结果:frozenset({1, 2, 3, 4, 5})
    

访问集合元素

  • 使用for读出
  • 通过innot in判断元素是否在集合中

添加与删除元素

set.add()
num = {4, 1, 4, 5, 4, 2, 2, 3}
num.add(9)
print(num)	# 结果:{1, 2, 3, 4, 5, 9}
set.remove()
num.remove(3)
print(num)	# 结果:{1, 2, 4, 5, 9}

文件IO

文件打开与关闭

open()
  • 常用格式:fileObject = open(file, mode = 'r')

    完整格式:fileObject = open(file, mode = 'r', buffering = -1, encoding = None, errors = None, newline = None, closefd = True, opener = None)

  • 参数:

    • file:文件名

    • mode:打开模式

      mode效果
      'r'只读打开(默认)
      'w'若不存在文件则创建新文件,若已存在则覆盖
      'x'若文件已存在,则引发异常
      'a'追加写入
      'b'二进制模式(与t模式相对)
      't'文本模式(默认)
      '+'可读可写模式(可添加到其他模式中使用)
      'U'通用换行符支持

      即:

      模式rr+ww+aa+
      创建
      覆盖
      指针在开始
      指针在结尾
  • 返回值:文件对象

fileObject.close()
  • 参数:无
  • 返回值:无
with关键字

使用with关键字处理文件对象是一种更加方便的方式。在结束后, 它会自动关闭文件:

with open('卢本伟语录.txt', 'r', encoding = 'gb18030') as fo:
    for eachLine in fo:
        print(eachLine)

文件读取

fileObject.read()
  • 格式:fileObject.read([size = -1])
  • 输入参数:要读取的字符数(默认为-1,表示读取整个文件)
  • 返回值:从文件中读取的字符
f1 = open('/Users/s.z.zheng/Documents/课外学习/Python/test/卢本伟语录.txt', 'r', encoding = 'gb18030')
print('文件的前11个字符:%s' % f1.read(11))   # 读取11个字符并打印
fileObject.readline()
  • 格式:fileObject.readline([size = -1])

文件写入

注意,需要保证modewa

fileObject.write()
  • 格式:fileObject.write(str)

  • 输入参数:要写入的字符串

  • 返回值:写入的字符数

f2 = open('file_test.txt', 'w')
f2.write('卢本伟牛逼!')
f2.write('abc123')
f2.close()
fileObject.writelines()
  • 功能:用于向文件中写入一序列的字符串

  • 格式:fileObject.writelines(sequence)

  • 输入参数:要写入文件的字符串序列(列表/元组/集合等)

  • 返回值:无

f2 = open('file_test.txt', 'w')
seq2 = ('Aa\n', 'Bb\n', 'Cc')
f2.writelines(seq2)

文件指针相关方法

fileObject.seek()
  • 功能:用于移动文件读取指针到指定位置(经常用于定位到文件起始位置:fileObject.seek(0, 0)
  • 格式:fileObject.seek(offset[, whence = 0])
  • 输入参数:
    • offset:开始的偏移量,也就是代表需要移动偏移的字节数
    • whence:(默认值为 0)表示要从哪个位置开始偏移;0代表从文件开头开始偏移,1代表从当前位置开始偏移,2代表从文件末尾偏移。
  • 返回值:若操作成功,则返回新的文件位置;若操作失败,则返回 -1。
fileObject.tell()
  • 功能:返回文件指针的位置
  • 格式:fileObject.tell()
  • 输入参数:无
  • 返回值:文件当前位置

pickle模块

可实现基本的数据序列化(将程序中运行的对象信息保存到文件中永久存储)和反序列化(从文件中创建上一次程序保存的对象)。

pickle.dump()
import pickle
my_list = [123, '阿森纳', ('a', 'bc')]

# 写
pickle_fo = open('my_list.pkl', 'wb')   # 必须为wb
pickle.dump(my_list, pickle_fo)
pickle_fo.close()
pickle.load()
# 读
pickle_fo = open('my_list.pkl', 'rb')
my_list2 = pickle.load(pickle_fo)
print(my_list2)

异常处理

Python标准异常

参见:https://www.runoob.com/python/python-exceptions.html

异常处理

try:
    # 代码
except 标准异常或标准异常元组 [as 存储异常提示的变量]:
    # 发生异常时执行的代码
else:
    # 未发生异常时执行的代码]
finally:
    # 无条件执行的代码

说明:

  • 可将存储异常提示的变量再代码发生异常时输出:print('ERROR!', 存储异常提示的变量)
  • except可多组连用,使try部分任一在except中的异常都可以被捕获;
  • try部分,如果某一行代码发生了异常,try部分的其余代码都不会被执行(异常处理模块之外的其余语句还会正常运行);并且也只会捕获到此行代码的异常(若发生的异常不在except之列则任何异常都不会被捕获);
  • 不论try部分有无异常,finally部分都会被无条件执行
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值