折叠

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的异同点

  1. tuple的创建用(),list的创建用[],当生命只有一个元素的tuple时,需要在这个元素的后面添加英文逗号
  2. list可变序列,tuple是不可变序列,tuple没有append()、extend()、insert()、pop()、remove()、sort()、reverse()、clear()、copy()方法,也不支持del删除单个元素,只能整体删除
  3. tuple只能通过切片访问tuple中的元素
  4. 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).常用方法

  1. item():获取键值对
  2. keys():获取key
  3. values():获取value
  4. pop():以key删除
  5. popitem():随机删除键值对,并返回键值对构成的元组
  6. clear():清空
  7. setdefault():和get()类似,如果key不存在设置default值,并返回default,default默认值为None
  8. update():dict1.update(dict2)`,一次性合并,相同键以dict2为准
  9. 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")
posted @ 2022-10-13 19:01  %p%s%n  阅读(115)  评论(0)    收藏  举报
折叠