Python之路-(列表、元组、字典、集合)

一、列表

序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推。

Python有6个序列的内置类型,但最常见的是列表和元组。

序列都可以进行的操作包括索引,切片,加,乘,检查成员。

此外,Python已经内置确定序列的长度以及确定最大和最小的元素的方法。

列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。

列表的数据项不需要具有相同的类型

#取值、切片

names = ["zhangsan","lisi","wangwu","chenliu"]

print (names)                #取所有列值
print (names[0],names[2])    #取值
print (names[0:3])           #切片,第一个值至第三个值
print (names[:3])            #0不写默认是0,切片,第一个值至第三个值
print (names[-1])            #取最后的值或者倒数第一个-2就是倒数第二个
print (names[-3:-1])         #倒数从左往右取值,顾首不顾尾

#添加、插入、修改、删除、查找、统计

#添加
names.append("xiaqi")        #在最后面添加一个值
#插入
names.insert(1,"caoba")      #在1的后面插入一个值,一定要输入在哪个值后面插入
#修改
names[2] ="xiaowang"        #在下标为2修改值,根据下标修改值
#删除
1、根据值删除
names.remove("caoba")
2、根据下标删除
del names[1]
3、删除最后一个
names.pop()    #删除最后一个,输出下标就删除下标 跟这个一样 del names[-1]
#查找下标
print(names.index("zhangsan"))  #找值的下标
print(names [names.index("zhangsan")] )  # 查找下标后打印下标内容
#统计
print(names.count("chenliu"))  #统计相同的值数量

#清空列表、翻转列表、排序列表、扩展列表

#清空列表
names.clear()
#翻转列表
number=[1,2,3,4,5,1,1]
number.reverse()
print(number)
[1, 1, 5, 4, 3, 2, 1]
#排序列表
number=[1,2,3,4,5,1,1]
number.sort()
#扩展列表
names2 = [1,2,3,4]
names.extend(names2)

#浅复制列表

names=[‘zhangsan‘,‘lisi‘,‘wangwu‘]
names2 = names.copy()
print(names)
print(names2)
[‘zhangsan‘, ‘lisi‘, ‘wangwu‘]
[‘zhangsan‘, ‘lisi‘, ‘wangwu‘]

names=[‘zhangsan‘,‘lisi‘,‘wangwu‘,[‘jonny‘]]
names2 = names.copy()
print(names)
print(names2)
[‘zhangsan‘, ‘lisi‘, ‘wangwu‘, [‘jonny‘]]
[‘zhangsan‘, ‘lisi‘, ‘wangwu‘, [‘jonny‘]]

names[2] = ‘王五‘
names [3] [0] = ‘JONNY‘
print(names)
print(names2)   #name2 只复制第一层的列表,不会复制第二层列表,也就是子列表

[‘zhangsan‘, ‘lisi‘, ‘王五‘, [‘JONNY‘]]     #names 修改的是第二层,然后wangwu变成了中文也是第二层
[‘zhangsan‘, ‘lisi‘, ‘wangwu‘, [‘JONNY‘]]   #但是names2是复制第一层,所以第一层是没有中文的王五,而jonny被改成了大写也是因为不复制,第二层也就是子列表。

浅复制的三种方式:
import copy
person=[‘name‘,[‘a‘,100]]

p1=copy.copy(person)
p2=person[:]
p3=list(person)

#深复制列表

import copy
names=[‘zhangsan‘,‘lisi‘,‘wangwu‘,[‘jonny‘]]
names2 = copy.deepcopy(names)
print(names)
print(names2)
names[2] = ‘王五‘
names [3] [0] = ‘JONNY‘
print(names)
print(names2)

[‘zhangsan‘, ‘lisi‘, ‘wangwu‘, [‘jonny‘]]
[‘zhangsan‘, ‘lisi‘, ‘wangwu‘, [‘jonny‘]]
[‘zhangsan‘, ‘lisi‘, ‘王五‘, [‘JONNY‘]]
[‘zhangsan‘, ‘lisi‘, ‘wangwu‘, [‘jonny‘]]

二、元组

元组与列表类似,元组一旦创建即不可修改。

元组使用小括号,列表使用方括号。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

Names=(‘name‘,‘jonny‘)

只有两种方法:

1、index 查找下标

2、count 统计

三、字典

字典是另一种可变容器模型,且可存储任意类型对象。

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

#创建一个新字典,同时赋值。

c = dict.fromkeys([6,7,8],[1,{‘name‘:‘alex‘},444])
print(c)
c[7][1][‘name‘]=‘Jack Chen‘   #会直接修改连接地址,所有name值全部都会修改。
print(c)
{8: [1, {‘name‘: ‘alex‘}, 444], 6: [1, {‘name‘: ‘alex‘}, 444], 7: [1, {‘name‘: ‘alex‘}, 444]}
{8: [1, {‘name‘: ‘Jack Chen‘}, 444], 6: [1, {‘name‘: ‘Jack Chen‘}, 444], 7: [1, {‘name‘: ‘Jack Chen‘}, 444]}

#修改、查、删除

#修改,存在则修改,不存在则创建
info = {
    ‘stu1101‘: ‘zhang san‘,
    ‘stu1102‘: ‘li si‘,
    ‘stu1103‘: ‘wang wu‘,
}
b = {
    ‘stu1101‘: ‘xiaxia‘,   #对应info的key stu1101值不一样,则被修改
    1:3,    #无对应key 则新增
    4:2     #无对应key 则新增
}
info.update(b)   #修改info字典,对应的key有值就修改,无则新增
print(info)
{1: 3, ‘stu1101‘: ‘xiaxia‘, 4: 2, ‘stu1102‘: ‘li si‘, ‘stu1103‘: ‘wang wu‘}
#查
print(info.get(‘stu1101‘))  #如果没有该key 则返回None。
print(info[‘stu1101‘])       #直接打印key的值
#删除1
del info[‘stu1101‘]
#删除2
info.pop(‘stu1104‘)
#随机删除
info.popitem() #随机删除一个元素

#多级嵌套

school = {
    "大学":{
        "www.nanjingdaxue.com": ["做夢吧","要求分数高"],
        "www.zhongshandaxue.com": ["醒醒吧","要求分数高"],
        "qinghuadaxue.com": ["不可能的","要求分数高"],
        "beijingdaxue.com":["难进","要求分数高"]
    },
    "高中":{
        "sihui":["轻松","收费低"]
    },
    "初中":{
        "weizheng":["容易","免费"]
    }
}
#修改
school[‘高中‘][‘sihui‘][1] = ‘毫不費力‘
#只打印key
print(school.keys())
#只打印值
print(school.values())
#嵌套循环打印
for  i in school:
    print(i,school[i])

#字典转换列表

#把字典转换为列表
print(info.items())
#字典转列表然后再循环
for k,v in info.items():
    print(k,v)

四、集合

集合(set)是一个无序不重复元素的序列。

基本功能是进行成员关系测试和删除重复元素。

可以使用大括号({})或者 set()函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

list_1 = [1,1,3,4,5,6]
list_1 = set(list_1)
#打印类型
print(list_1,type(list_1))
list_2 = set([2,3,4,7,9])
print(list_2)
print(list_1,list_2)
#交集 .intersection
print(list_1.intersection(list_2))  #取出交集
#并集 .union
print(list_1.union(list_2))  #去重合并
#差集 .difference
print(list_1.difference(list_2))  #保留list_1里面有的list_2里面没有的
#子集 .issubset
list_3 = set([1,3,4])
print(list_3.issubset(list_1))   #list_1 包含list_3 的所有值,则返回Ture
print(list_1.issuperset(list_3))  # 返回Flase
#对称差集 .symmetric_difference
print(list_1.symmetric_difference(list_2))   #把相互都没有的值取出来
#对比是否有交集,没有为True,有则False
list_4 = set([5,6,7])
print(list_3.isdisjoint(list_4))  #没有交集为True
集合符号:
#交集
print(list_2 & list_3)
#并集
print(list_2 | list_3)
#求差集
print(list_2 - list_3)
#对称差集
print(list_2 ^ list_3)
#添加
list_1.add(999)
print(list_1)
#添加多项
list_4.update([888,999,111])
#删除一项
list_4.remove(999)
#集合长度
print(len(list_4))
#判断是不是成员
print(111 in list_4)
#列表、字典、字符串、集合、元组判断是不是成员都是用in
print(list_1.pop()) #任意删除一个
list_1.discard(‘4‘) #删除,没返回
时间: 2024-10-28 16:33:18

Python之路-(列表、元组、字典、集合)的相关文章

python 数据类型 变量 列表 元组 字典 集合

Python中,能够直接处理的数据类型有以下几种: 整数 Python可以处理任意大小的整数,当然包括负整数,在程序中的表示方法和数学上的写法一模一样,例如:1,100,-8080,0,等等. 计算机由于使用二进制,所以,有时候用十六进制表示整数比较方便,十六进制用0x前缀和0-9,a-f表示,例如:0xff00,0xa5b4c3d2,等等. 浮点数 浮点数也就是小数,之所以称为浮点数,是因为按照科学记数法表示时,一个浮点数的小数点位置是可变的,比如,1.23x109和12.3x108是完全相等

python中列表 元组 字典 集合的区别

列表 元组 字典 集合的区别是python面试中最常见的一个问题.这个问题虽然很基础,但确实能反映出面试者的基础水平. (1)列表 什么是列表呢?我觉得列表就是我们日常生活中经常见到的清单.比如,统计过去一周我们买过的东西,把这些东西列出来,就是清单.由于我们买一种东西可能不止一次,所以清单中是允许有重复项的.如果我们扩大清单的范围,统计我们过去一周所有的花费情况,那么这也是一个清单,但这个清单里会有类别不同的项,比如我们买东西是一种花费,交水电费也是一种花费,这些项的类型是可以使不同的.pyt

python数据类型基础总结(字符串 列表 元组 字典 集合 )

字符串: 有序.不可变数据类型,支持索引,切片,步长(字符串中的每一个字母或字符都称为元素) 索引(下标):通过索引精确定位到每个元素 索引从左开始向右排 从0开始 索引时不能超过最大值,超出报错 从右向左排从-1开始 切片(顾头不顾尾) 步长 print(name[::2] 取整个字符串,步长为2 字符串方法: upper 全部大写 lower全部小写 capitalize 首字母大写 title每个单词的首字母大写 swapcase 大小写转换 starswith 以..开头 endswit

Python的列表&元组&字典&集合

目录 列表(list) 列表的定义 列表的查询 增加数据 修改数据 删除数据 其它常用操作 元组(tuple) 元组的拆包 具名元组 字典(dict) 创建字典 字典添加数据 查询字典数据 修改字典数据 删除字典数据 其它操作 字典的遍历 集合(set) 集合的创建 访问集合 更新集合 删除集合 集合的操作符 集合应用 列表(list) ? 列表(list)是python以及其他语言中最常用到的数据结构之一.Python使用中括号 [ ] 来解析列表.列表是可变的(mutable)--可以改变列

Python数据结构之列表元组字典的用法

数据结构的含义 在学习数据结构之前,我们先来了解下数据结构的含义.数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在Python语言中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序号----即元素的位置,称为索引或下标,索引从0开始递增. 典型的序列包括列表.元组和字符串.其中,列表是可变的(可修改),而元组和字符串是不可变的(一旦创建了就是固定的).列表.元组和字符串也是较常用的数据结构

3 - 列表 元组 字典 集合

列表 names = ['a','b','c','d','e','f','g','h','i','j','k','l'] names.append('a') #插入一个a names.extend(['q','m'])#拓展列表 names.remove('b') #删除b del names[1] #删除c name = names.pop(1) #移出d print(name) print(names.index('a')) #匹配第一个a的位置 print(names.count('a')

[Python日记-2]列表-元组-字典-if-for

今天学习了列表,元组,字典相关知识,真的琐碎.我应该是学了好几遍了,刚开始是充满激情的,学到一个方法就迫不及待地去尝试,现在也平和了.好了,总结下. 1. 列表 Python中用方括号([])来表示列表,并用逗号来分隔其中的元素.要访问列表元素,列表的名称[索引]. 索引可以是负值,如将索引指定为-1,可让Python返回最后一个列表元素.可以在不明确列表长度的情况下,访问最后的元素. 1.1 列表中添加元素的方法: 1 Lis = [] 2 3 Lis.title() #使列表中每个元素的首字

Python笔记第2章,文件,字符串,列表,元组,字典,集合的使用

<--目录--> 1)Python文件处理 2)字符串处理 3)列表.元组.字典的使用 4)集合的妙用 1.文件处理 文件处理模式 r 以只读模式打开文件 w 以只写模式打开文件 a 以追加模式打开文件 r+  为读写模式 rw跟r+一样,先读后写 w+  为写读模式,会先清空这个文件,再往里面写 a+  为追加模式 rb 以读写模式打开 wb 以写读模式打开 ab 以追加及读模式打开 +b 表示必须以二进制的模式处理文件,Windows系统上使用有效,Linux系统上使用无效,但工作中Lin

Python列表 元组 字典 集合

元组 Python中的元组(Tuple)类似于Java中的数组,一旦创建了一个 tuple,就不能以任何方式改变它.这点与Python中的字符串类似,所以我们说元组和字符串都是不可变的序列.元组也支持索引和分片操作. 定义一个元组使用一对小(圆)括号” ( ) “. #定义一个元组 tuple1 = (1, 2, '3', 4, '5') # 定义了一个元组之后就无法再添加或修改元组中的元素 print tuple1[0] # 元组的元素都有确定的顺序.元组的索引也是以0为基点的 print t

python的列表元组字典集合比较

定义 方法 列表 可以包含不同类型的对象,可以增减元素,可以跟其他的列表结合或者把一个列表拆分,用[]来定义的 eg:aList=[123,'abc',4.56,['inner','list'],7-9j] 1.list(str):将str转换成list类型,str可以使字符串也可以是元组类型 2.aList.append('test'):追加元素到列表中去 3.del aList[1]:删除列表中下标为1的元素 del aList:删除整个列表 4.cmp(list1,list2):比较两个列