Day 04 python学习笔记

Python数据容器

元组

元组的声明
变量名称=(元素1,元素2,元素3,元素4…….)   (元素类型可以不同)

eg:
tuple_01 = ("hello", 1, 2,-20,[11,22,33])
print(type(tuple_01))

结果:
<class 'tuple'>

元组的定义

定义空元组
变量名称=()
变量名称=tuple()

元组的嵌套

((),())
下标索引取出元素====与列表相同

元组的强制转换

typle()  强制转换

元组与列表的区别:

  1. 符号:元组( )         列表[ ]
  2. 元组的元素一旦定义,不可更改     而列表可以   (最大的区别)
eg:
tuple_01[1] = "l love you"


结果:
Traceback (most recent call last):
  File "D:\pycharm\main.py", line 5, in <module>
    tuple_01[1] = "l love you"
TypeError: 'tuple' object does not support item assignment

因为元组的元素一旦定义,不可更改

但是:元组里列表元素里的值可以改变

eg:
tuple_01 = ("hello", 1, 2,20,[11,22,33])
print(tuple_01)
tuple_01[-1][0] = "l love you"
print(tuple_01)


结果:
('hello', 1, 2, 20, [11, 22, 33])
('hello', 1, 2, 20, ['l love you', 22, 33])

元组切片

元组的切片和字符串、列表的切片是一样的

eg:
tuple_01 = ("hello", 1, 2,-20,[11,22,33])
print(tuple_01[1:4])   

结果:
(1, 2, 20)

推荐网站:python在线演示  Python compiler - visualize, debug, get AI help from ChatGPT

这个可以让你清晰的观看到python的运行过程   (这是python官方网站,用图清晰的表示代码的运行顺序)

元组、列表、字符串公用的方法

len ()           求元组的长度(与字符串、列表用法相同)

eg:
tuple_01 = ("hello", 1, 2,20,[11,22,33])
len(tuple_01)
print(len(tuple_01))

结果:
5

max (列表/字符串/元组名)        求最大 值 (若是字符、字母按照ASCII码表进行比较)

min (列表/字符串/元组名)         求最小值(若是字符、字母按照ASCII码表进行比较)

元组的注意事项:

元组的特殊写法:t = 1,  2, 3  也是元组

eg:
t = (1, 2, 3)
print(type(t))
t1 = 1, 2, 3
print(type(t1))

结果:
<class 'tuple'>
<class 'tuple'>

单个数字  t = (2)     这是整型,因为解释器认为 () 是运算符

解决方法  t = (2, )   这即是元组

结论:只有一个元素时,元组后面必须带 ,

eg:
t1 = (2)
print(type(t1))
t2 = (2, )
print(type(t2))

结果:
<class 'int'>
<class 'tuple'>

元组的乘法

eg:
>>> t=(22,)
>>> t*10
(22, 22, 22, 22, 22, 22, 22, 22, 22, 22)
>>>

元组的方法:

index

元组.index(元素)        查询某元素下标

eg:
>>> t=(75,23,22,12,1)
>>> t
(75, 23, 22, 12, 1)
>>> t.index(22)
2          #索引下标为2时为22
>>> t.index(222)    #没有时报错
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: tuple.index(x): x not in tuple
>>>

count

元组.count(元素)        统计某元素在列表中的数量

eg:
>>> t1=(1,2,3,4,2,2,2,3)
>>> t1
(1, 2, 3, 4, 2, 2, 2, 3)
>>> t1.count(2)
4
>>>

因为元组不能更改,所以他的方法只有两种

并且看过我Day 03学习笔记的应该了解,这两种方法在列表里也有

集合

不支持元素重复,内部元素无序   (可用于去重)
变量名称={元素,元素,元素..........}   
变量名称=set()  (创建空集合的唯一办法)

注意:{ 元素 }    { }内至少有一个元素,此时才是集合,无元素为空集合

set_01={'gouxin','zhangsan','gouxin','zhangsan','gouxin','zhangsan'}
print(set_01)



 

eg:
set_01 = set("12345")  #名称尽量不要起set,这是关键字,set()函数,
print(set_01)          #大部分解释器会报错
set_02 = set("123451111111122223333444")
print(set_02)
set_03 = set([1,2,3,4])  #可能解释器会爆红,这是不推荐,但可以
print(set_03)
set_04 = set([1,2,3,4,1,1,1,1,2,2,2])
print(set_04)
set_05 = set((10,20,30,1,1,1))
print(set_05)

d = {
    "姓名":"zs",
    "年龄":18
}                #简单的字典形式,后面会详细讲
set_06 = set(d)  #转换为集合
print(set_06)

结果:
{'2', '3', '4', '1', '5'}  #无序的,你第二遍运行可能就会不同
{'2', '3', '4', '1', '5'}  #去除重复的元素
{1, 2, 3, 4}         #按大小顺序给我们显示出来
{1, 2, 3, 4}         #也会给我们去重
{1, 10, 20, 30}      #按大小顺序给我们显示出来,同时去重
{'年龄', '姓名'}      #会把字典里的键名放在集合里

变量名称 = set( 元素 )    元素数据类型只能是字符串、列表、元组、字典

变量名称 = { 元素}   元素数据类型只能是数字、字符串、元组

集合的方法

常用操作
不支持下标索引访问(因为集合本身是无序的)
允许修改

集合.add(元素)将指定的元素添加到集合内
集合一.update(集合二)将两集合合并,合并到集合一里(集合二不变)
集合.remove(元素)将指定的元素,从集合中移除
集合.pop()随机取出一个元素
集合.discard(元素)删除指定元素,不存在不做任何操作
集合一.intersection(集合二)集合一与集合二的交集,原集合不变
集合一.union(集合二)两个集合进行合并 ,原集合不变
集合一.difference(集合二)差集,取出集合一有而集合二没有的,原集合不改变

集合一.difference_update(集合二)
消除差集:在集合一内,删除和集合二相同的元素 集合一改变,集合二不变
集合.clear()清空集合
len(集合)统计集合中元素的数量
集合.copy()       拷贝集合
for in集合的遍历

add
集合.add(元素)        将指定的元素添加到集合内
eg:
set_01 = {1,2,3,"l love"}
print(set_01)
set_01.add("you")   
print(set_01)

结果:
{1, 2, 3, 'l love'}
{'you', 1, 2, 3, 'l love'}    #因为集合本身是无序的

update

集合一.update(集合二)        将两集合合并,合并到集合一里(集合二不变)

eg:
print(set_01)
set_02 =(4,5,6)
print(set_02)
set_01.update(set_02)
print(set_01)
print(set_02)


结果:
{1, 2, 3, 'l love', 'you'}
(4, 5, 6)
{1, 2, 3, 'l love', 4, 5, 6, 'you'}  #集合的排列是随机排列的
(4, 5, 6)

remove

集合.remove(元素)        将指定的元素,从集合中移除

eg:
print(set_01)
set_01.remove(4)
print(set_01)
set_01.remove(4)

结果:
{1, 2, 3, 4, 5, 6, 'you', 'l love'}
{1, 2, 3, 5, 6, 'you', 'l love'}
Traceback (most recent call last):     #4不存在,报错
  File "D:\pycharm\main.py", line 39, in <module>
    set_01.remove(4)
KeyError: 4

pop

集合.pop()        随机取出一个元素

eg:
print(set_01)
set_01.pop()
print(set_01)

结果:
{1, 2, 3, 4, 5, 6, 'l love', 'you'}
{2, 3, 4, 5, 6, 'l love', 'you'}

discard

集合.discard(元素)        删除指定元素,不存在,则不做任何操作

eg:
print(set_01)
set_01.discard("you")
print(set_01)
set_01.discard("you")    #不存在,也不会报错
print(set_01)

结果:
{1, 2, 3, 4, 5, 6, 'you', 'l love'}
{1, 2, 3, 4, 5, 6, 'l love'}
{1, 2, 3, 4, 5, 6, 'l love'}    #不存在,则不做任何操作

交集和并集

&   交集          求相交的(共有的)

|    并集          求合并的(两集合合并,并且去重)

eg:
set_01 = {1,2,3,5,6,"l love"}
set_02 = {4,5,6,"l love","you"}
print(set_01 & set_02)    #求相交的(共有的)
print(set_01 | set_02)    #求合并的(两集合合并,并且去重)
print(set_01)
print(set_02)

结果:
{'l love', 5, 6}   
{1, 2, 3, 'you', 5, 6, 4, 'l love'}
{1, 2, 3, 5, 6, 'l love'}    #不会改变集合本身
{'you', 4, 5, 6, 'l love'}

intersection

集合一.intersection(集合二)        求集合一与集合二的交集

eg:
print(set_01)
print(set_02)
set_01.intersection(set_02)  #与&的效果相同
print(set_01.intersection(set_02))
print(set_01)    #不会改变集合本身
print(set_02)

结果:
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 6, 'l love', 'you'}
{'l love', 5, 6}
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 6, 'l love', 'you'}

union

集合一.union(集合二)      两个集合进行合并 ,原集合不变  

eg:
print(set_01)
print(set_02)
set_01.union(set_02)
print(set_01.union(set_02))
print(set_01)      #不会改变集合本身
print(set_02)

结果:
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 'l love', 6, 'you'}
{1, 2, 3, 4, 5, 6, 'l love', 'you'}  #与 | 的效果相同,会去重
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 'l love', 6, 'you'}

difference

集合一.difference(集合二)       差集,取出集合一有而集合二没有的,原集合不改变 

eg:
print(set_01)
print(set_02)
set_01.difference(set_02)
print(set_01.difference(set_02))
print(set_01)
print(set_02)

结果:
{1, 2, 3, 'l love', 5, 6}
{'l love', 4, 5, 6, 'you'}
{1, 2, 3}        #取出合一有而集合二没有的,原集合不改变
{1, 2, 3, 'l love', 5, 6}
{'l love', 4, 5, 6, 'you'}

difference_update

集合一.difference_update(集合二)        消除差集:在集合一内,删除和集合二相同的元素 集合一改变,集合二不变

eg:
print(set_01)
print(set_02)
set_01.difference_update(set_02)   
print(set_01.difference_update(set_02))
print(set_01)
print(set_02)


结果:
{1, 2, 3, 5, 6, 'l love'}
{4, 5, 6, 'l love', 'you'}
None         #因为已经进行过一次了,使集合一已经发生改变,无操作返回None
{1, 2, 3}    #集合一改变
{4, 5, 6, 'l love', 'you'}   #集合二不变

clear

集合.clear()        清空集合

eg:
print(set_01)
print(set_02)
set_01.clear()
print(set_01)
print(set_01.clear())
print(set_01)
print(set_02)


结果:
{1, 2, 3, 5, 6, 'l love'}
{'you', 4, 5, 6, 'l love'}
set()    #清空集合后返回一个set()函数,表示空集合
None     #空集合无可清空,即返回None
set()    #返回一个set()函数,表示空集合
{'you', 4, 5, 6, 'l love'}

len

len(集合)        集合中元素的数量

eg:
print(set_01)
len(set_01)     #统计集合中元素的个数,不会直接打印
print(len(set_01))   
print(set_01)


结果:
{1, 2, 3, 'l love', 5, 6}
6
{1, 2, 3, 'l love', 5, 6}    #不改变集合本身

copy

集合.copy()        拷贝集合(对拷贝的副本进行的操作与原先集合无关系)

eg:
print(set_01)
set_01.copy()   #拷贝集合的内容,不打印
print(set_01.copy())
print(type(set_01.copy()))    
print(set_01)

结果:
{1, 2, 3, 'l love', 5, 6}
{1, 2, 3, 'l love', 5, 6}
<class 'set'>     #类型还是集合
{1, 2, 3, 'l love', 5, 6}   #不改变集合本身

扩展:

在python内置解释器里,对于上述操作显示不需要了,可以用于清屏,之前的操作还是存在的

>>>import os
>>>os.system("cls")

字典

字典的定义:

字典:键值对的形式存在 (key(键):value(值))     

关键字(即键)不可变           不重复(重复会爆红)        无下标索引
按照key找到value
键 可以为任意不可变数据(元组,数字,字符串)

eg:
my_dict={
key:value, #键值对
key:value,
key:value
}

创建空字典

my_dict={ }
my_dict=dict()    dict()也是强制转换

eg:
dict_00 = {}     #注意:这是字典不是集合
print(type(dict_01))
print(dict_00)

dict_01 = {
    "uname":"zhangsan",   #键是字符串(最常见)
    "age":18,
    1:18,                 #键是数字
    (1,2,3):18            #键是元组
}
print(type(dict_01))
print(dict_01)

dict_02 = dict()
print(type(dict_02))
print(dict_02)

dict_03 = dict((["uname","zhangsan"],["age",18]))  #赋值方式
print(type(dict_03))
print(dict_03)


结果:
<class 'dict'>
{}  
<class 'dict'>     #类型字典
{'uname': 'zhangsan', 'age': 18, 1: 18, (1, 2, 3): 18}   #字典的内容
<class 'dict'>
{}                 #空字典
<class 'dict'>
{'uname': 'zhangsan', 'age': 18}     

字典的方法

字典[key]=value新增元素
del 字典[key]删除元素
字典[key]=value更新元素
字典[key]查询元素(值)
字典.get(key)查询元素(值)
字典.keys()获取全部key
字典.items()获取全部键值对
字典.values()获取全部value
字典.clear()清空元素
字典.copy()拷贝字典
新字典名.fromkeys(key,value)创建一个新字典
字典.pop(key)删除元素
字典.popitem()删除最后一项元素并返回
字典一.update(字典二)将两字典合并,合并到字典一里(字典二不变)
key in(not in) 字典        判断元素是否在字典里

1、for i in 字典:

2、for key in 字典.keys()

3、for key in 字典.values()

4、for key in 字典.items()

遍历(迭代)字典,获取键/值/键值对
len()统计字典的元素数量

字典[key]=value        新增元素

eg:
dict_01 = {
    "姓名":"张三",
    "年龄":18
}
print(dict_01)

dict_01["技能"] = "python"
print(dict_01)


结果:
{'姓名': '张三', '年龄': 18}
{'姓名': '张三', '年龄': 18, '技能': 'python'}

删(del关键字)

del 字典[key]                删除元素

eg:
print(dict_01)
del dict_01["姓名"]
print(dict_01)


结果:
{'姓名': '张三', '年龄': 18, '技能': 'python'}
{'年龄': 18, '技能': 'python'}

改(重新赋值)

字典[key]=value          更新元素

eg:
print(dict_01)
dict_01["技能"] = "安全渗透"
print(dict_01)

结果:
{'年龄': 18, '技能': 'python'}
{'年龄': 18, '技能': '安全渗透'}

字典[key]             查询元素(值)  

eg:
print(dict_01)
print(dict_01["技能"])


结果:
{'年龄': 18, '技能': '安全渗透'}
安全渗透

查(get函数)

字典.get(key)               查询元素(值)

get函数用于在字典中获取指定键的值,可以设置默认返回值,在找的键不存在时,就会将默认值返回出来

eg:
print(dict_01)
print(dict_01.get("技能"))
print(dict_01.get("姓名"))
print(dict_01.get("姓名","l love you"))   #修改默认值


结果:
{'年龄': 18, '技能': '安全渗透'}
安全渗透
None       #若获取的东西没有时,返回None(表示无)
l love you    #将默认值修改

keys

字典.keys()        获取全部key(以列表的形式返回字典中所有的键)

eg:
dict_01 = {
    "uname":"zhangsan",
    "age":21
}
print(dict_01.keys())

结果:
dict_keys(['uname', 'age'])
items

字典.items()                获取全部键值对

eg:
dict_01 = {
    "uname":"zhangsan",
    "age":21
}
print(dict_01.items())

结果:
dict_items([('uname', 'zhangsan'), ('age', 21)])
values

字典.values()        获取全部value

eg:
dict_01 = {
    "uname":"zhangsan",
    "age":21
}
print(dict_01.values())

结果:
dict_values(['zhangsan', 21])

clear

字典.clear()        清空元素

eg:
dict_01 = {
    "uname":"zhangsan",
    "age":21
}
print(dict_01.clear())
print(dict_01)

结果:
None     #无元素返回None
{}

copy

字典.copy()        (对拷贝的副本进行的操作与原先集合无关系)

eg:
dict_01 = {
    "uname":"zhangsan",
    "age":21
}
dict_01.copy()
print(dict_01.copy())
print(dict_01)

结果:
{'uname': 'zhangsan', 'age': 21}
{'uname': 'zhangsan', 'age': 21}

fromkeys

新字典名.fromkeys(key,value)             创建一个新字典,第一个参数用于作为字典的键,第二个参数用于作为字典的值(第二个参数可以为任何数据)

eg:
d1 = dict_01.fromkeys(("姓名","年龄"),("zhangsan",21))
print(d1)

结果:
{'姓名': ('zhangsan', 21), '年龄': ('zhangsan', 21)}
#不太智能,只能把后面的值作为一个整体给前面的键都赋同样的值
pop

字典.pop(key)      删除元素  

eg:
dict_01 = {
    "uname":"zhangsan",
    "age":21
}
dict_01.pop("uname")
print(dict_01)

结果:
{'age': 21}


eg:
dict_01 = {
    "uname":"zhangsan",
    "age":21
}
print(dict_01.pop("uname"))    #会打印删除的值
print(dict_01)

结果:
zhangsan         
{'age': 21}


eg:
dict_01 = {
    "uname":"zhangsan",
    "age":21
}
dict_01.pop("uname")
print(dict_01.pop("uname"))    
print(dict_01)         #无删除元素会报错

结果:
Traceback (most recent call last):
  File "D:\pycharm\main.py", line 63, in <module>
    print(dict_01.pop("uname"))
KeyError: 'uname'

popitem

字典.popitem()                删除元素的最后一项,并以元组的形式将删除的键值对返回

eg:
dict_01 = {
    "uname":"zhangsan",
    "age":21
}
d1 = dict_01.popitem()  #返回但不打印
print(d1)
print(dict_01)

结果:
('age', 21)
{'uname': 'zhangsan'}
update

字典一.update(字典二)        将两字典合并,合并到字典一里(字典二不变)

eg:
dict_01 = {
    "uname":"zhangsan",
    "age":21
}
dict_02 = {
    "uname":"zhang",
    "姓名":"zhangsan"
}
print(dict_01)
print(dict_02)
dict_01.update(dict_02)
print(dict_01)  #如果两字典有相同的键,将字典二的键值对覆盖字典一
print(dict_02)

结果:
{'uname': 'zhangsan', 'age': 21}
{'uname': 'zhang', '姓名': 'zhangsan'}
{'uname': 'zhang', 'age': 21, '姓名': 'zhangsan'}   
{'uname': 'zhang', '姓名': 'zhangsan'}
in   not in

key in(not in) 字典        判断元素是否在字典里

eg:
dict_01 = {
    "uname":"zhangsan",
    "age":21
}

print("uname" in dict_01)
print(21 in dict_01)
print("uname" not in dict_01)
print(21 not in dict_01)

结果:
True
False
False
True
遍历(迭代)
for i in 字典:

for i in 字典:                获取字典的值

例:
dict_01 = {
    "uname": "zhangsan",
    "age": 21,
    "技能": "python"
}


print(dict_01)
for i in dict_01:
    print(dict_01[i])


结果:
{'uname': 'zhangsan', 'age': 21, '技能': 'python'}
zhangsan
21
python

for key in 字典.keys()

for key in 字典.keys()                获取字典的键

例:
dict_01 = {
    "uname": "zhangsan",
    "age": 21,
    "技能": "python"
}

print(dict_01.keys())
for i in dict_01.keys():
    print(i)


结果:
dict_keys(['uname', 'age', '技能'])
uname
age
技能

for key in 字典.values()

for key in 字典.values()                获取字典的值

例:
dict_01 = {
    "uname": "zhangsan",
    "age": 21,
    "技能": "python"
}

print(dict_01.values())
for i in dict_01.values():
    print(i)


结果:
dict_values(['zhangsan', 21, 'python'])
zhangsan
21
python

for key in 字典.items()

for key in 字典.items()                获取字典的键值对

例:
dict_01 = {
    "uname": "zhangsan",
    "age": 21,
    "技能": "python"
}

print(dict_01.items())
for k, v in dict_01.items():
    print(k, ">>", v)


结果:
dict_items([('uname', 'zhangsan'), ('age', 21), ('技能', 'python')])
uname >> zhangsan
age >> 21
技能 >> python

字典的嵌套

my_dict={
key:{
        key:value, #键值对
        key:value,
        key:value
    }

}

eg:
my_dict={
"王力宏":{
        "语文":77,
        "数学":66,
        "英语":33
    },
"周杰伦":{
        "语文":88,
        "数学":86,
        "英语":55
    },
"林俊杰":{
        "语文":99,
        "数学":96,
        "英语":66
    }
}
print(my_dict["王力宏"]["语文"])



结果:
77

练习:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值