系列文章目录
python基础
文章目录
- python基础
- 前言
- 一、字符串str
- 二、容器的通用操作
- 三、列表list
- 四、元组tuple
- 五、字典dict
- 六、集合set
- 七、固定集合frozenset
- 总结
前言
作为一门优秀的面向对象编程语言,python很值得我们学习,想要入门python,第一部分就需要掌握python基础
一、字符串
1.定义:由一系列字符组成的不可变序列容器,存储的是字符的编码值
2.编码:字节byte:计算机最小存储单位,等于8位bit b,kb,mb,g,t
字符:单个的数字,文字与符号
字符集(码表):存储字符与二进制序列的对应关系
编码:将字符转换为对应的二进制序列的过程
解码:将二进制序列转换为对应的字符的过程
编码方式:--ASCII编码:包含英文、数字等字符,每个字符一个字节
--GBK编码:兼容ASCII编码,包含21003个中文;英文1个字节,汉字2个字节
--Unicode字符集:国际统一编码,旧字符集每个字符2字节,新字符集4字节
--UTF-8编码:Unicode的存储与传输方式,英文1字节,中文三字节
3.相关函数:ord(字符串):返回该字符串的Unicode码
chr(整数):返回该整数对应的字符串
4.str字面值:@1表示方式:字符串可加单引号,双引号,三引号 eg:'苏大强',"苏大强","'苏大强"'
其中单引号与双引号可以嵌套使用 eg:message = "我叫'苏大强'。"
@2转义字符:作用:改变原始字符含义 \n(换行符) \t(水平制表格)
a = r"c:\newfile\test.py"(取消转义)
5.在字符串中插入变量
eg:str02 = "请输入%s+%s=?" % (a,b)
二、容器通用操作
一、数学运算符
1.+:用于拼接两个容器
2.+=:用原容器与右侧容器拼接,并重新绑定变量
3.*:重复生成容器元素
4.*=:用原容器生成重复元素,并重新绑定变量
5.<,<=,...!=:依次比较两个容器中的元素,一但不同返回布尔值(比较运算符)
二、成员运算符
in:判断一个容器是否属于另一个容器
print("我叫"in"我叫齐天大圣")#输出结果为True
三、索引与切片
1.正向索引
eg:我[0]叫[1]齐[2]天[3]大[4]圣[5]
2.反向索引
eg:我[-6]叫[-5]齐[-4]天[-3]大[-2]圣[-1]
3.切片
作用:从容器中取出相应的元素重新组成一个容器
语法:容器[(开始索引):(结束索引)(:(步长))]
说明:小括号()括起来的部分可以省略
message = "我叫齐天大圣"
print(message[0:2])#我叫
# 开始值默认为开头
print(message[:2])#我叫
# 结束值默认为末尾
print(message[-2:])#大圣
print(message[:])#我叫齐天大圣
print(message[-2:-5:-1])#大天齐
print(message[::-1])#圣大天齐叫我
print(message[1:1])#空
三、列表
一、定义:
由一系列变量组成的可变序列容器
二、创建列表
list01 = []
list01 = list()
#空列表
list02 = ["悟空",100,True]
list02 = list("我是齐天大圣")#将字符串转换为列表
三、获取元素
索引:print(list02[2])#齐
切片:print(list02[-4:])#['齐','天','大','圣']
添加元素:1.追加(在末尾添加)eg:list02.append("八戒")
2.插入(在指定位置添加)eg:list02.insert(1,True)在索引为1 的位置添加True
删除元素:1.根据元素删除 eg:list02.remove("是")
2.根据位置删除 eg:del list[0] 删除元素“我”
定义元素目的:可以通过切片增删改查元素
eg: del list02[1:3] (通过切片删除多个元素)
list_favor = []#创建一个空列表
while True:
str_favor = input("请输入你喜欢的人物:")
if str_favor == "":
break#当输入空字符串时,则跳出循环
list_favor.append(str_favor)#将输入的人物名称添加进列表中
for item in list_favor:
print(item)#顺序输出列表中的元素
四、容器内建函数
min(容器):返回容器最小值
max(容器):返回容器最大值
sum(容器):返回容器中所有值之和
len(容器):返回容器大小
list_score = []
while True:
str_score = input("请输入学生成绩:")
if str_score == "":
break
list_score.append(int(str_score))
print("最高分为:"+str(max(list_score)))
print("最低分为:"+str(min(list_score)))
print("平均分为:"+str(sum(list_score) / len(list_score)))
五、列表内存图
注解:list01与list02指向的是同一块内存空间
六、深拷贝与浅拷贝
浅拷贝:复制过程中,只复制一层变量,不会复制深层变量绑定的对象地址
深拷贝:复制整个依赖的变量
import copy#导入copy类
list01 = [800, [1000, 500]]#创建二维列表
list02 = copy.deepcopy(list01)#深度拷贝,将list01的内存全部拷贝
list01[1][0] = 900
print(list02[1][0])#输入结果为1000,不受list01[1][0]的影响
list01 = [800, [1000, 500]]
list02 = list01[:]#浅拷贝,也可以写成list01.copy()
list01[1][0] = 900
print(list02[1][0])#输出结果为900,浅拷贝只复制了第一层变量
七、列表与字符串对比
1.列表转换为字符串
list_temp = []
for item in range(10):
list_temp.append(str(item))
# join:list-->str
result = " ".join(list_temp)#用空格键将列表中元素隔开
print(type(result))
print(result)
2.字符串转换为列表
#练习:英文单词翻转
#“How are you”-->"you are How"
str01 = "How are you"
list_temp = str01.split(" ")
str_result = " ".join(list_temp[::-1])
print(str_result)
八、列表推导式
list01 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
list02 = [item + 1 for item in list01]#将list01中元素加1
print(list02)
list03 = [item + 1 for item in list01 if item > 5]将list01中的大于5的元素加1
print(list03)
四、元组
一、定义
1.由一系列变量组成的不可变序列容器
2.不可变是指一旦创建,不可以再添加/删除/修改元素
注意:元组与列表本质上的区别在于是否可变,列表在创建时系统会为其
预留一块空间,形象一点说就是学校分配一个十人间的寝室,住一个人或
者两个人都可以,而列表有自动扩容机制,当超过十个人时,学校就会分
配一个更大的寝室;而元组则不同,有三个人需要入住,学校就只分配三
个人的空间,无自动扩容机制,所以就不能对其进行添加/删除/修改元素
3.列表扩容原理:列表都会预留空间,当预留空间不足时,会再创建新列
表(开一个更大的空间),将原有数据拷贝到新列表中
二、元组的基础操作
1.创建元组
tuple01 = ()#创建一个空元组
tuple01 = (1,2,3)#创建一个具有默认值的元组
2.获取元素(索引,切片)
3.遍历元素
三、元组的作用
1.元组与列表都可以存储一系列变量,由于列表会预留内存空间
2.元组会按需分配内存,所以如果变量数量固定,建议使用元组
3.应用:
变量交换的本质就是创建元组:x,y = y,x
格式化字符串的本质就是创建元组:“姓名:%s,年龄:%d” %("孙悟空",20)
#日期转天数练习
count = 0
tuple01 = (31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
tuple02 = (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
year = int(input("请输入年份:"))
month = int(input("请输入月份:"))
day = int(input("请输入日期:"))
if year % 4 == 0 and year % 100 != 0 or year % 400 == 0:
for item in range(month - 1):
count += tuple02[item]
count += day
print(count)
else:
for item in range(month - 1):
count += tuple01[item]
count += day
print(count)
五、字典
一、定义
1.由一系列键值对组成的可变映射容器
2.映射:一对一的对应关系,且每条记录无序
3.键必须唯一且不可变(字符串/数字/元组),值没有限制
二、基本操作
1.创建
dict01 = {} dict01 = dict()#空
dict01 = {"wj":100}
dict01 = dict([("a","b"),("c","d")])#将元组转换为字典
2.查找元素(根据key查找value)
print(dict01["a"])
3.修改元素(之前存在key)
dict01["a"] = "BB"
4.添加(之前不存在key)
dict01["e"] = "f"
5.删除
del dict01["a"]
6.遍历(获取字典中所有元素)
for key in dict01:
print(key)#打印的是键
print(dict01[key])#打印的是值
for value in dict01.values():#遍历字典,获取value
print(value)
for item in dict01.items():#遍历字典,获取键值对key,value
print(item)
#商品信息录入及打印练习
dict_good = {}
while True:
name = input("请输入商品名称:")
if name == "":
break
price = int(input("请输入商品单价:"))
dict_good[name] = price
for key, value in dict_good.items():
print("%s的单价为%d元" % (key, value))
#学生信息录入及打印
dict_stu = {}
list_stu = []
while True:
name = input("姓名为:")
if name == "":
break
age = int(input("年龄为:"))
score = float(input("成绩为:"))
sex = input("性别为:")
dict_stu[name] = [age, score, sex]
for key, value in dict_stu.items():
print("姓名为:"+key)
print("年龄为%d 成绩为%f 性别为%s" % (value[0], value[1], value[2]))
三、字典推导式
六、集合
一、定义
1.由一系列不重复的不可变类型变量组成的可变映射容器
2.相当于只有键没有值的字典(键则是集合的数据)
3.python中的集合与数学上集合的意义相当,具有无序,不重复性,还有交,并,补运算
二、基础操作
1.创建空集合:
集合名 = set()
集合名 = set(可迭代对象)
2.创建具有默认值集合:
集合名 = {1,2,3}
集合名 = set(可迭代对象)
3.添加元素:
集合名.add(元素)
4.删除元素:
集合名.discard(元素)
集合名.remove(元素)
5.获取所有元素:
for item in set02:
print(item)
6.数学运算:
七、固定集合
一、定义
不可变的集合
二、作用
固定集合可以作为字典的键,还可以作为集合的值
总结
以上就是今天要讲的内容,本文介绍了python中的各种容器及其应用,其中列表是重点,这是python基础部分中较为重要的内容。