Python学习笔记3

本文详细介绍了Python中的元组、列表、字典和集合这四种数据结构,包括它们的定义、区别、操作方法以及在函数参数、返回值和数据存储中的应用。特别强调了数据的不可变性和安全性。
摘要由CSDN通过智能技术生成

元组 tuple

基本格式:元组名 = (元素1, 元素2, 元素3...)

定义元组时,如果只有一个元素,末尾要加逗号,否则返回唯一的值的数据类型

多个元素用逗号隔开,不同元素也可以是不同的数据类型

元组和列表的区别

元组只有一个元素末尾必须加逗号,列表不需要;

元组只支持查询操作,不支持增删改操作

元组也有下标,从左往右,从0开始

count()、index()、len()跟列表的用法相同

应用场景

函数的参数和返回值

格式化输出后面的()本质上就是一个元组

数据不可以被修改,保护数据的安全

name = 'abcdabcd'
age = 18
print("%s的年龄是: %d" % (name, age))    # abcdabcd的年龄是18
info = (name, age)
print(type(info))                       # <class 'tuple'>
print("%s的年龄是: %d" % info)           # abcdabcd的年龄是18

字典 dict

基本格式:字典名 = {键1: 值1, 键2: 值2...}

键值对形式保存,键和值之间用冒号隔开,每个键值对之间用逗号隔开

键具有唯一性,但是值可以重复

dic = {'name': 'abcdabcd', 'name': 'efghefgh'}
print(dic)        # 不会报错,键名重复前面的值会被后面的值覆盖

常见操作

查看元素

变量名[键名]

不可以根据下标,字典中没有下标,查找元素需要根据键名,键名相当于下标,键名不存在会报错

变量名.get(键名, k)

键名不存在默认返回None,可以通过k设置键名不存在的返回值

修改元素

变量名[键名] = 值

列表通过下标修改,字典通过键名修改

添加元素

变量名[键名] = 值

键名存在就修改,不存在就新增

删除元素

del

删除整个字典,格式:del 字典名

删除指定键值对,键名不存在就会报错,格式:del 字典名[键名],没有指定的键名就会报错

clear()

清空整个字典里面的东西,但保留了这个字典

pop()

格式:pop(键名)

删除指定键值对,键不存在就会报错

不写键名会报错

popitem()         
# 3.7之前的版本是随机删除一个键值对,3.7之后的版本默认删除最后一个键值对

求长度len()

格式:len(字典名)

返回键值对的个数

keys()

格式:字典名.keys()

返回字典里面包含的所有键名

values()

返回字典里面包含的所有值

items()

返回字典里面包含的所有键值对,键值对以元组形式

字典的应用场景

使用键值对,存储描述一个物体的相关信息

集合 set

基本格式:集合名 = {元素1, 元素2, 元素3...}

s1 = {}        # 定义空字典
s2 = set()     # 定义空集合

集合具有无序性


# s1 = {'a', 'b', 'c', 'd', 'e', 'f'}
# print(s1)        # 每次运行结果都不一样
# s2 = {1, 2, 3, 4, 5, 6}
# print(s2)        # 数字运行结果一样
# 集合无序的实现方式涉及hash表
print(hash('a'))
print(hash('b'))
print(hash('c'))
# 每次运行结果都不同,hash值不同,那么在hash表中的位置也不同,这就实现了集合的无序性
print(hash(1))     # 1
print(hash(2))     # 2
print(hash(3))     # 3
# python中int整型的hash值就是它本身,在hash表中的位置不会发生变化,所以顺序也不会改变

集合具有唯一性,可以自动去重

集合常见操作

添加元素

add() 添加的是一个整体

s2 = {1, 2, 3, 4}
print("原集合:", s2)
# 集合的唯一性,决定了如果需要添加的元素在原集合中已经存在,就不进行任何操作
# s2.add(1)         # {1, 2, 3, 4}
# s2.add(5)         # {1, 2, 3, 4, 5}
# s2.add(5, 6)      # 一次只能添加一个元素
s2.add((5, 6))      # {1, 2, 3, 4, (5, 6)}
print("现集合:", s2)

update()

把传入的元素拆分,一个个放进集合中,元素必须是能够被我们for循环取值的可迭代对象

s2 = {1, 2, 3, 4}
print("原集合:", s2)
# s2.update(567)        # 报错
# s2.update('567')      # {1, 2, 3, 4, '6', '7', '5'} 顺序随机
# s2.update([5, 6, 7])  # {1, 2, 3, 4, 5, 6, 7}
s2.update((5, 6, 7))    # {1, 2, 3, 4, 5, 6, 7}
print("添加后:", s2)

删除元素

remove: 选择删除的元素,如果集合中有就删除,没有就会报错

pop: 对集合进行无序排列,将左边第一个元素删除。默认删除根据hash表排序后的第一个元素

discard: 选择要删除的元素,有就会删除,没有则不会发生任何改变,不会进行任何操作

交集和并集

交集 &

共有的部分

没有共有的部分返回空集合set()

并集 |

所有的都放在一起,重复的不算(集合的唯一性)

类型转换

int():

转换为一个整数,只能转换由纯数字组成的字符串

浮点型强转整型会去掉小数点及后面的数值,只保留整数部分

如果字符串中有数字和正负号(+/-)以外的字符就会报错

+/-写在前面表示正负号,不可以写在后面

input默认输入的是字符串类型

float()

转换为一个小数

整型转换为浮点型,会自动添加一位小数

如果字符串中有正负号、数字和小数点以外的字符,则不支持转换

str()

转换为字符串类型,任何类型都可以转换成字符串类型

float转换成str会去除末位为0的小数部分

# st = str(-1.80)            # -1.8
# st = str(-1.000)           # -1.0
st = str(-1.0)               # -1.0

eval()

用来执行一个字符串表达式,并返回表达式的值

print(10 + 10)            # 20
print('10' + '10')        # 1010
print('10+10')            # 10+10
print(eval('10+10'))      # 20 执行运算并返回运算值
print(eval("10+'10'"))    # 报错,整型和字符串不可以相加

eval()可以实现list、dict、tuple和str之间的转换

# str -> list
st1 = "[[1, 2], [3, 4], [5, 6]]"
print(type(st1))                # <class 'str'>
li = eval(st1)
print(li, type(li))             # [[1, 2], [3, 4], [5, 6]] <class 'list'>

# str -> dict
st2 = "{'name':'abcd','age':18}"
dic = eval(st2)
print(dic, type(dic))           # {'name':'abcd','age':18} <class 'dict'>

eval()非常强大,但是不够安全,容易被恶意修改数据,不建议使用

list()

将可迭代对象转换为列表

支持转换为list的类型:str、tuple、dict、set

集合转换成列表会先去重,再转换

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值