python基础
python基础
一、容器
1.列表:list
(1)基础使用
# 1.创建
list1 = list()
list2 = []
list3 = [1, 2]
# 2.引用
# 下标引用 与数组相同
# 反向引用 倒数第几个
print(list3[-1])
# 列表中的数据类型可以任意 注意下标越界问题
# 3.删除
del list1
(2)列表操作
# 1.+和+=
# +运算是返回一个新列表
# +=是原地操作
list1 = [1, 2]
# 获取列表地址
print(id(list1))
list1 + = list1 + [3,4]
print(list1)
print(id(list1))
list1 += [5,6]
print(list1)
print(id(list1))
# 2.*和*=
# *可用于列表和整数相乘,表示序列重复 返回新列表
# *= 属于原地操作
print(id(list2))
list2 = list2 * 2
print(list2)
print(id(list2))
list2 *= 2
print(id(list2))
print(list2)
# 3.in
# 用于测试列表中是否包含谋个元素,运算结果为bool
# 4.<、<=、>、>=、==、!=
# 可用于比较两个列表的大小 返回bool
(3)内置函数
同样适用于元组、字典、集合和字符串
# 1.len()
# 返回列表元素个数
# 2.max()、min()
# 3.sum()
# 列表全为数值类型可用
# 4.sorted()
# 返回排序后的新列表
# 默认升序,降序:加参数
list1 = [3, 5, 1, 2, 8, 7]
print(sorted(list1))
print(sorted(list1, reverse = True))
# 5.reversed()
# 返回逆序后的迭代器reversed对象
# 适用于有序系列
# 6.zip()
# 将多个列表对应位置的元素拉链式组合成元组,并返回zip对象
list2 = [1, 2, 3]
list3 = ['a', 'b', 'c']
list4 = zip(list2, list3)
print(list4)
print(list(list4))
# 7.enumerate()
# 返回包含若干个有下标和值组合成元组的enumerate对象
list5 = [1, 2, 3, 4, 5]
print(enumerate(list5))
print(list(enumerate(list5))
# all()、any()
# all()用来测试列表中是否所有的元素都等价于true
# any()用于测试列表中是否有元素等价于true
(4).对象的常用方法
# 1.添加元素
# append()、insert()、extend()均为原地操作
# inset():指定位置不合法时,插入在头部或者尾部
list1 = [2, 3]
print(list1)
list1.append(4)
print(list1)
list1.insert(0, 1)
print(list1)
list1.extend([6, 7, 8])
print(list1)
# 2.删除元素
# del命令、pop()、remove()、clear()均为原地操作
# pop():指定位置不合法,抛出异常
list2 = [1, 2, 3, 4, 5, 6]
list2.pop() # 默认弹出
print(list2)
list2.pop(2)
print(list2)
list2.extend([4, 5])
list2.remove(4)
print(list2)
del list2[2]
list2.clear() # 删除所有
# 3.元素位置
# index():返回用于返回指定元素在列表中首次出现的下标位置,如果没有抛出异常
# 4.元素统计
# count():统计并返回列表中某元素出现的次数
# 5.元素逆序
# reverse():实现对列表元素进行逆序,原地操作
# 6.元素排序
# sort():进行排序,原地操作,默认从小到大
# 参数key用来指定排序规则、reverse参数指定升序还是降序
# 7.列表复制
# copy():复制并返回一个新列表(浅复制)
# = 赋值是同时改变的
# 8.列表遍历
# in
list3 = [1, 2, 3, 4, 5, 6, 7, 8]
for i in list3:
if i % 2 == 1:
print(i, end='')
# 使用len()函数确定长度
for i in range(len(list3)):
if i % 2 == 0:
print(i, end=' ')
(5).列表的切片
# 操作
list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# x[start: end: step] 默认start = 0, end = len(list), step = 1,左闭右开
list1[0: 8: 2]
print(list1)
# 反向截取 step为负整数,start要大于end
list1[5:0:-1]
print(list1)
# 当截取长度大于len(list)时,截取到尾部
(6).列表推导式
# 不带表达式的列表推导式,求平方值
list1 = [i ** 2 for i in range(10)]
print(list1)
list2 = [i for i in range(10) if i % 2 == 0]
print(list2)
2.元组:tuple
tuple与list的异同点
- tuple的创建用
(),list的创建用[],当生命只有一个元素的tuple时,需要在这个元素的后面添加英文逗号 - list可变序列,tuple是不可变序列,tuple没有
append()、extend()、insert()、pop()、remove()、sort()、reverse()、clear()、copy()方法,也不支持del删除单个元素,只能整体删除 - tuple只能通过切片访问tuple中的元素
- tuple访问速度比list快
3.字典:dict
(1).基础使用
# 创建
dict1 = {}
dict2 = {'a':1, 'b':2, 'c':3}
dict3 = dict()
# 引用
# key不存在时 抛出异常
print(dict2['a'])
dict2['a'] = 4
print(dict2)
# get方法,key不存在时不会抛出异常
print(dict2.get('a'))
# 删除
del dict1
print(dict1) # 会抛出异常
# 通过in运算符判断key是否在dict中
# dict中没有reversed()方法
# 不能对dict直接sum()
# sorted(),默认对key排序,对value排序:sorted(dict.values())
(2).常用方法
item():获取键值对keys():获取keyvalues():获取valuepop():以key删除popitem():随机删除键值对,并返回键值对构成的元组clear():清空setdefault():和get()类似,如果key不存在设置default值,并返回default,default默认值为Noneupdate():dict1.update(dict2)`,一次性合并,相同键以dict2为准copy():=复制同步改变,copy()不会
4.集合:set
集合是一个无序且没有重复元素的可变序列,只能包含不可变类型的数据,无法嵌套,不能包含列表、字典、集合等类型数据
(1).基础使用
# 初始化
set1 = set()
set2 = {1, 2, 3, 4, 5}
(2).常用方法
set1 = {1, 2, 3, 4}
set2 = {3, 4, 5, 6}
# 差集
print(set1.difference(set2))
# 交集
print(set1.intersection(set2))
# 并集
print(set1.union(set2))
# 对称差集
print(set1.symmetric_difference(set2))
# 判断是否是子集
print(set1.issubset(set2))
# copy()方法浅复制
二、其他
1.字符串
string属于不可变的有序序列,py没有独立的字符数据类型,字符即长度为1的字符串
字符串支持双向索引
# 内置函数len()、max()、min()、sorted()、reversed()、zip()、enumerate()、all()、any()、eval(),使用方法和列表及元组等序列类似
2.函数与模块
lambda表达式
# 匿名函数:可以有多个参数、也可以没有参数,但是返回值有且只有一个,调用时通常把匿名函数赋值给一个变量,再利用变量调用
f = lambda x, y : x + y
print(f(3, 5))
参数的传递
python中的函数参数传递都是引用传递
# 可变长度参数
# 元组作为可变参数
def sum( * num):
s = 0
for i in num:
s = s + i
print("sum=", s)
return s
print(sum(1, 2, 3, 4, 5))
print(sum(15, 30, 10))
print(sum())
numbers = [1, 2, 3]
print(sum( * numbers))
# 字典作为可变参数
def total(**t):
s = 0
for i in t.values:
s += i
return s
# a,b,c为key,后面是value
sum = total(a = 10, b = 20, c = 30)
print("sum=", sum)
# python支持多返回值,多返回值是由一个多个数据构成的元组
3.文件
# 读取
f = open("test.txt")
str = f.read()
print(str)
f.close()
# 写入文件
import os
str = "ajkld\na;skjd\n"
path = "E:/桌面/dekstop/文件"
if not os.path.exists(path):
print("文件夹不存在")
os.makedirs(path)
print("文件夹创建成功")
f = open("E:/桌面/dekstop/文件/1.txt", 'w', encoding="utf8")
f.writelines(str)
f.close()
print("写入成功")
4.面向对象
class Dog: # 定义类
def __init__(self, name, color, weight): # 构造方法
self.name = name
self.color = color
self.weight = weight
@class method # 类方法
def bark(cls):
print("wang wang!")
Dog.bark()
5.错误和异常
异常处理
# 此代码不能运行
a = 12
b = 0 # 会引发第一个except子句
b = 'abc' # 会引发第二个except子句
b = 2 # 会引发else子句
try:
c = a/b
except (NameError, ZeroDivisionError) as e:
print(111, e)
except:
print(22)
else:
print(3)
finally:
print("I`m here forever")

浙公网安备 33010602011771号