Python 容器类型--list、tuple、dict、set

目录

一、list列表

1.列表的定义

2.list特点

2.1.list为有序项目集合

2.2.list为可变数据类型

2.3.list可以存放任何数据类型

3.list的增删改查

3.1.list的新增

3.2.list的运算

3.3.list的删除

3.4.list的修改

4.统计

5.list的拷贝

6.list的反转--reverse

7.list的排序--sort

8.list的遍历

二、tuple元组

1.tuple的定义

2.tuple的特点

2.1.有序项目集合

2.2.可以存放任何数据类型

2.3.不可变数据类型

三、dict字典

1.dict的特点

1.1.键值映射的数据结构 key--value

1.2.无序项目集合,没有直接的index索引

1.3.可变数据类型

2.dict的取值

2.1.使用key直接取值

2.2.使用get取值

3.字典的遍历

4.dict的成员关系判断

5.dict的删除

6.dict的合并

7.dict与str格式的转换

四、set集合

1.set的特点

1.1.set可以理解为一个只有key的字典,所有里面的元素都是唯一的,天生去重

1.2.无序项目集合

1.3.可变数据类型,但集合中的元素必须是不可变数据类型

2.set的新增

3.set的删除

4.集合运算

五、面试相关问题

列表与元组的区别

字典与集合的区别


一、list列表

1.列表的定义

#方式一
lst1 = []
print("method1:", type(lst1))
#方式二
lst2 = list()
print("method2:", type(lst2))

#list()为工厂函数,可以把其他数据类型转换为list
#若在list()中传递的是可迭代对象时,可挨个存入列表
lst3 = list("123abc")
print("lst3 is", lst3)

2.list特点

2.1.list为有序项目集合

lst = ["a", "b", "c", "d", "e"]
#输出列表第2个元素
print(lst[1])
#lst[-1:2:-2] 其中-1为起始位置,2为结束位置(不包括),-2位步长
#正数表示从前往后 负数表示从后往前
print(lst[-1:2:-2])

2.2.list为可变数据类型

可变数据类型就是在原内存地址空间上,可以修改

lst = ["abc", "123"]
#id()内置函数返回对象的内存地址
print("the id before modifing is", id(lst))
#尝试直接修改原list,查看内存地址是否改变
lst[1] = "xxyy"
print("the id after modifing is", id(lst))

#如果直接修改不可变数据类型,会报错
#string为不可变数据类型
str1 = "abc"
try:
    #尝试修改str1的第1个元素
    str1[0] = "x"
    print("modify successful!")
except TypeError as err:
    print(err)

2.3.list可以存放任何数据类型

#print表示存放内置函数
lst = ["a", 3.4, 4, [1], print]

3.list的增删改查

3.1.list的新增

函数具体作用
appen()往列表末尾追加元素
insert()在指定位置插入元素
extend()传入的元素为可迭代对象,依次向末尾插入每个元素
lst = ["aa", "12", "bb"]

lst.append("xxx")
print("after append:", lst)

lst.insert(2, "***")
print("after insert:", lst)

lst.extend("123")
print("after extend:", lst)

3.2.list的运算

lst1 = [1, 2]
lst2 = [3, 4]
print("lst1 + lst2 =", lst1 + lst2)
print("lst1 * 3 =", lst1 * 3)

3.3.list的删除

函数具体作用
pop()

默认删除末尾元素,也可以指定下标删除

可以返回删除的值

remove()指定元素删除,元素不存在会报错
del语句删除切片
clear()删除全部元素
lst = ["a", "b", 1, 2, "c", "d"]

value = lst.pop()
print("delete the end of list:", lst)
print("the value of deleting:", value)
lst.pop(0)
print("delete the first of list:", lst)

try:
    lst.remove("d")
    print("delete success!")
except:
    print("delete fail!")

del lst[2:]
print("delect the a slice of list:", lst)

lst.clear()
print("delete all elements:", lst)

3.4.list的修改

lst = ["a", "b", "c", "e", "f"]
#通过下标修改
lst[2] = "***"
print("after modifying by index:", lst)
#通过切片修改,赋值对象是一个可迭代对象
lst[3:] = "123"
print("after modifying by slice:", lst)

4.统计

函数具体作用
len()统计列表的长度
count()

统计指定元素在列表中出现的次数

index()返回指定元素在列表中出现的下标位置,若有指定元素有多个,返回第一个元素的下标
lst = ["a", "a", "d", "d", "e"]
print("the length of list:", len(lst))
print("the count of a:", lst.count("a"))
try:
    print("the index of d:", lst.index("d"))
except ValueError as err:
    print(err)

5.list的拷贝

若直接使用"lst2 = lst1"进行复制,lst1与lst2指向的就是同一个对象,若改变lst2中的值也会对lst1中的值产生影响,可以使用copy()进行浅拷贝--仅拷贝类型的值

lst1 = ["a", "b", "c", "d", "e", "f"]
lst2 = lst1.copy()

#修改lst2的值 不会对lst1产生影响
lst2[2] = "***"
print("lst1 is", lst1)
print("lst2 is", lst2)

#以切片的方式也可以实现浅拷贝
lst3 = lst1[:]
lst3[3] = "***"
print("lst1 is", lst1)
print("lst3 is", lst3)

6.list的反转--reverse

lst = ['a', 'b', 'c', 'd', 'e', 'f']
lst.reverse()
print("reverse list:", lst)

7.list的排序--sort

sort方法默认对列表进行升序排序,若列表内元素是数字,则按照数字从小到大进行排序;若列表内元素为字符串,则按照字符串所有字符的Unicode码之和进行排序

lst = ['f', 'e', 'd', 'c', 'b', 'a']
lst.sort()
print("asc:", lst)
#降序排序
lst.sort(reverse=True)
print("desc:", lst)

8.list的遍历

lst = ["abc", "aa", "xx", "xyz"]

# 依次取列表中的元素
for i in lst:
    print(i)

# enumerate返回下标和值
print("key  -->     value")
for k, v in enumerate(lst):
    print(f"{k}    -->     {v}")

二、tuple元组

1.tuple的定义

t1 = ()
print(type(t1))

t2 = (1, )     #初始元组只有一个元素时,后面要打逗号,没有逗号为int类型
t3 = (1)
print(f"type of t2 is {type(t2)}, type of t3 is {type(t3)}")

2.tuple的特点

2.1.有序项目集合

2.2.可以存放任何数据类型

2.3.不可变数据类型

不可以更改元组中的数据,但如何想要修改的数据为可变类型时,那么这个元素又是可以修改的,如:list等

t1 = ("abc", 3, 4.5, [1, 2])
try:
    t1[0] = "a"
    print("modify success!", t1)
except TypeError as err:
    print(err)
# 修改tuple中存放的list类型的数据(可变数据类型)
try:
    t1[3][0] = 2
    print("modify success!", t1)
except TypeError as err:
    print(err)

三、dict字典

1.dict的特点

1.1.键值映射的数据结构 key--value

字典的key,天生去重,且key必须是可hash对象(不可变数据类型)

字典的value可以是任何值

1.2.无序项目集合,没有直接的index索引

1.3.可变数据类型

2.dict的取值

2.1.使用key直接取值

d1 = {"name": "sumeng", "age": 18}
print(d1["name"])
# 没有想要获取的key值时会报错
try:
    print(d1["xxx"])
except:
    print("get error")

2.2.使用get取值

get属性获取值时如果找不到指定的key,不会报错会直接返回None,get还可以设置默认值

d1 = {"a": 1, "b": 2}
print("the value of a is", d1.get("a"))
# 若字典key没有c,则返回0
print("the value of c is", d1.get("c", 0))

3.字典的遍历

d1 = {"a": 1, "b": 3}
# 直接进行循环遍历取值,取到的为key值
for i in d1:
    print(f"key is {i}")
# 使用items方法返回key和value
for i in d1.items():
    print(f"(key, value) is {i}")
for k, v in d1.items():
    print(f"{k} --> {v}")

4.dict的成员关系判断

d1 = {"a": 1, "b": 3, "c": 5}

# 使用in关键字判断指定值是否在字典中--默认情况下判断的是key值
print("if a in d1:", "a" in d1)

# 使用values返回字典的所有value值
print(f"the values of dict is", d1.values())

# 使用keys返回字典中所有的key值
print(f"the keys of dict is", d1.keys())

5.dict的删除

d1 = {"a": 1, "b": 2, "c": 3}

# pop删除指定元素,返回指定删除key的values值
value1 = d1.pop("a")
print("deleted value is", value1)

# popitem删除存储的最后一个,返回被删除的(key, vlaue)元组
value2 = d1.popitem()
print("deleted (key, value) is", value2)

6.dict的合并

d1 = {"a": 1, "b": 2}
d2 = {"c": 3, "d": 4}

# 直接改变的d1的内容,将d2合并到d1中去
d1.update(d2)
print(f"method1: {d1}")

# 合并生成新字典
d3 = dict(d1, **d2)
print(f"method2: {d3}")

7.dict与str格式的转换

使用JSON库

import json
d1 = {"zhangsan": {"age": 18, "hobby": "basketball"},
      "lisi": {"age": 18, "hobby": "music"}}

# dict --> str
d1_str = json.dumps(d1)
print(f"the type of d1_str is {type(d1_str)}")

# str --> dict
d2 = json.loads(d1_str)
print(f"the type of d2 is {type(d2)}")

四、set集合

1.set的特点

1.1.set可以理解为一个只有key的字典,所有里面的元素都是唯一的,天生去重

该特点可以用于类型的转换,实现去重

1.2.无序项目集合

1.3.可变数据类型,但集合中的元素必须是不可变数据类型

2.set的新增

s1 = {1, 2, 3}

# 新增1个元素
s1.add(4)
print(f"after add:", s1)

# 一次性新增多个元素update--传递可迭代对象
s1.update("abc")
print(f"after update:", s1)

3.set的删除

s1 = {1, 2, 3, 4, 'a', 'c', 'b'}

# 使用remove删除元素,若要删除的元素set中没有会报错
s1.remove(4)
print("after remove:", s1)

# 使用discard删除元素,要删除的元素不在set中也不会报错
s1.discard("x")
print("after discard:", s1)

4.集合运算

s1 = {1, 2, 3, 4}
s2 = {2, 4, 5, 6}

# 交集
print("s1 & s2 =", s1 & s2)
# 并集
print("s1 | s2 =", s1 | s2)
# 差集
print("s1 - s2 =", s1 - s2)
print("s2 - s1 =", s2 - s1)
# 对称差集--在s1、s2中,但不同时在两个里面
print("s1 ^ s2 =", s1 ^ s2)

五、面试相关问题

列表与元组的区别

1.列表为可变数据类型,支持增删改操作,元组为不可变数据类型,无法进行增删改操作,只能整体替换

2.由于列表为可变数据类型,所以不能作为字典的key值,但元组可以

3.存储时,空列表比空元组多占用16个字节

4.列表定义时使用中括号[],而元组定义时使用圆括号()

字典与集合的区别

字典是一系列无序的组合,其中的元素是一堆key(键)和value(值)的配对

集合是一系列无序、唯一的元素组合,但没有键和值的配对

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的list(列表),tuple(元组),dict(字典)和set(集合)是常见的数据结构。 1. 列表(list)是一个可变的、有序的元素集合。可以通过方括号[]来创建一个列表,列表中的元素可以是任意类型,并且可以重复。列表提供了丰富的操作方法,如添加元素、删除元素、获取元素等。 2. 元组(tuple)是一个不可变的、有序的元素集合。可以通过小括号()来创建一个元组,元组中的元素可以是任意类型。元组一旦创建后,不能修改其元素的值。元组通常用于存储不可变的数据,如坐标位置、颜色等。 3. 字典(dict)是一种键值对(key-value)的数据结构。可以通过花括号{}来创建一个字典,字典中的元素是无序的,并且每个元素由一个键和对应的值组成。字典中的键必须是唯一的,而值可以是任意类型。字典提供了根据键获取值、添加键值对、删除键值对等操作。 4. 集合(set)是一个无序的、不重复的元素集合。可以通过花括号{}或set()函数来创建一个集合,集合中的元素不能重复。集合提供了并集、交集、差集等常用的数学运算操作,同时还支持元素的添加、删除等操作。 在编程中,根据具体的需求选择使用合适的数据结构能够更高效地处理数据,并且提供相应的操作方法方便开发。以上是对Python中常见的列表、元组、字典和集合的简要介绍。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值