python 列表与元组

本文详细介绍了Python中的序列类型,包括字符串、列表和元组,强调了它们的共同特性和各自特点。重点讲解了列表的创建、删除、连接、成员关系、索引、切片等操作,并展示了常用的列表方法,如追加、修改、查看、删除等。此外,还提到了元组作为不可变序列的使用和命名元组的概念。最后,讨论了`is`和`==`的区别以及深拷贝与浅拷贝的差异。
摘要由CSDN通过智能技术生成

一 序列

成员有序排列的,且可以通过下标偏移量访问到它的一个或者几个成员,这类类型统称为序列。
序列数据类型包括:字符串,列表,和元组类型。
特点: 都支持下面的特性
索引与切片操作符
成员关系操作符(in , not in)
连接操作符(+) & 重复操作符(*)

二 列表

数组: 存储同一种数据类型的集和。scores=[12,95.5]
列表(打了激素的数组): 可以存储任意数据类型的集和。

1 列表的创建和删除

 2 列表的特性

# 1. 连接操作符和重复操作符
print([1, 2] + [2, 3]) # [1, 2, 2, 3]
print([1, 2] * 3) # [1, 2, 1, 2, 1, 2]

# 2. 成员操作符(in, not in)
print(1 in [1, 2, 3]) # True
"""
布尔类型:
    True: 1
    False:0
"""
print(1 in ["a", True, [1, 2]])  # True
print(1 in ["a", False, [1, 2]])  # False

# 3. 索引
li = [1, 2, 3, [1, 'b', 3]]
print(li[0])  # 1
print(li[-1]) # [1, 'b', 3]
print(li[-1][0])  # 1
print(li[3][-1])  # 3

# 4. 切片
li = ['172', '25', '254', '100']
print(li[:2])
print(li[1:])
print(li[::-1])
# 需求: 已知['172', '25', '254', '100'], 输出: "100-254-25"
li = ['172', '25', '254', '100']
print("-".join(li[1:][::-1]))

# 5. for循环
names = ["粉丝", '粉条', '粉带']
for name in names:
    print(f"西部开源猫的姓名是:{name}")

3 列表的常用方法

 

1. 增加
1). 追加

li = [1, 2, 3]
li.append(4) #添加单个元素
print(li) # [1,2,3,4] 默认添加在末尾
2). 在列表开头添加

li = [1, 2, 3]
li.insert(0, 'cat')
print(li) #['cat',1,2,3]

在索引2前面添加元素cat

li = [1, 2, 3]
li.insert(2, ‘cat’)
print(li)

3). 一次追加多个元素

li = [1, 2, 3] # 添加4, 5, 6
li.extend([4, 5, 6])
print(li) ##[1,2,3,4,5,6]

2. 修改: 通过索引和切片重新赋值的方式。
li = [1, 2, 3]
li[0] = ‘cat’ ##将原列表中第一个元素1改为cat
li[-1] = ‘westos’ ##3—> westos
print(li) ##['cat',2,'westos']

li = [1, 2, 3]
li[:2] = [‘cat’, ‘westos’]
print(li) ##[‘cat’,‘westos’,3] 将前两个元素换为。。。

3. 查看: 通过索引和切片查看元素。 查看索引值和出现次数
li = [1, 2, 3, 1, 1, 3]
print(li.count(1)) # 3
print(li.index(3)) # 2

4. 删除
1). 根据索引删除

li = [1, 2, 3]
将pop方法的结果存储到delete_num变量中。

delete_num = li.pop(-1) 会删除掉列表中最后一个元素
print(li) ##[1,2]
print(“删除的元素是:”, delete_num)
2). 根据value值删除

li = [1, 2, 3]
li.remove(1)
print(li)
3). 全部清空

li = [1, 2, 3]
li.clear()
print(li)

5. 其他操作
li = [1, 2, 3, 4]
li.reverse() #类似于li[::-1]
print(li)

6. sort排序默认由小到大。 如果想由大到小排序,设置reverse=True

li.sort(reverse=True)
print(li)

li1 = li.copy()
print(id(li), id(li1))
print(li, li1)

 三 元组

特性: 连接&重复操作符、成员操作符、索引&切片

注意: 元组是不可变数据类型,不能对元组的值任意更改

1元组的创建

t1 = () # 空元组

t2 = (1,) # 重要(易错点):元组只有一个元素时一定要加逗号
print(t2, type(t2))

t3 = (1, 1.2, True, [1, 2, 3]) 仍然是元组类型

2元组基本特性

rint((1, 2, 3) + (3,))
print((1, 2, 3) * 2)
print(1 in (1, 2, 3))
t = (1, 2, 3)
print(t[0])
print(t[-1])
print(t[:2])
print(t[1:])
print(t[::-1])

3. 常用方法: 元组是不可变数据类型(不能增删改)

查看: 通过索引和切片查看元素。 查看索引值和出现次数。

t = (1, 2, 3, 1, 1, 3)
print(t.count(1)) # 3
print(t.index(3)) # 2

四 命名元组(namedtuple)

1.创建命名元组对象User
User = namedtuple(‘User’, (‘name’, ‘age’, ‘city’))
2.给命名元组传值
user1 = User(“westos”, 18, “西安”)
3 打印命名元组
print(user1)
4 获取命名元组指定的信息
print(user1.name)
print(user1.age)
print(user1.city)

 五 is 和==的区别

"""
python语言:
    ==: 类型和值是否相等
    is: 类型和值是否相等, 内存地址是否相等

"""
print(1 == '1')   # False
li = [1, 2, 3]
li1 = li.copy()
print(li == li1)  # True

# 查看内存地址
print(id(li), id(li1))
print(li is li1)  # False

六 深拷贝与浅拷贝

赋值: 创建了对象的一个新的引用,修改其中任意一个变量都会影响到另一个。(=)

浅拷贝: 对另外一个变量的内存地址的拷贝,这两个变量指向同一个内存地址的变量值。(li.copy(), copy.copy())
公用一个值;
这两个变量的内存地址一样;
对其中一个变量的值改变,另外一个变量的值也会改变;

深拷贝: 一个变量对另外一个变量的值拷贝。(copy.deepcopy())
两个变量的内存地址不同;
两个变量各有自己的值,且互不影响;
对其任意一个变量的值的改变不会影响另外一个;

七 练习

编写一个云主机管理系统:

    添加云主机(IP, hostname,IDC)
    搜索云主机(顺序查找)
    删除云主机
    查看所有的云主机信息

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值