1.列表

变量类型

Python 中数据类型可以分为数字型和⾮数字型

  • 数字型
    • 整型(int)
    • 浮点型(float)
    • 布尔型(bool)
  • 非数字型
    • 列表
    • 元组
    • 集合
    • 字典
    • 字符串

在Python中,所有非数字型变量都支持以下特点:

  1. 都是一个序列
  2. 通过 变量名[索引] 方式取值
  3. 通过 for in 遍历
  4. 可以计算长度、最大和最小值

列表介绍

List(列表)是Python中最频繁使用的数据类型,功能类似于其他编程语言中的 数组,专门用于按顺序存储一系列数据。

  • 列表用[]定义, 列表中的数据之间使用,进行分隔

  • 列表的索引从0开始

  • 索引就是数据在列表中的位置编号,索引又可以称为下标

  • 注意:从列表中取值时,如果超出索引范围程序会报错。

一、查看列表所有方法

list = ["test01","test02","test03"]
print(dir(list))

二、列表常⽤方法

image-20250829192631010

三、循环遍历列表

遍历就是从头到尾依次从列表中获取数据

使用 for 循环遍历计算列表中一共有多少数字

list1 = [0, 3, 3, 9, 10 ,3 ,5]
count = 0
for i in list1:
    if isinstance(i,int):
        count += 1  
print(count)

计算列表中所有数字相加的总和

list1 = [0, 3, 3, 9, 10 ,3 ,5]
sum = 0
for i in list1:
    sum += i
print(sum)

在Python中,可以使用for循环遍历所有非数字类型的变量,包括列表、元组、字典以及字符串

四、拆包

  • 拆包就是把一个列表中每个值拆出来
  • 拆包操作同样适用于元组、集合和字典
# 定义一个列表
list1 = ["test01",10,1.1]
# 通过对列表进行拆包方式获取列表中每个元素的值
a,b,c = list1
print(a,b,c)

五、列表推导式

  • 所谓的列表推导式,就是指轻量级的循环创建列表的方法
  1. 基本的方式
# a 的内容为[0, 1, 2, 3]
a = [x for x in range(4)]
# a 的内容为[2, 3]
a = [x for x in range(2,4)]
# a 的内容为[3, 5, 7, 9]
a = [x for x in range(3,10,2)]
  1. 在推导过程中使用if
# a 的内容为[4, 6, 8]
a = [x for x in range(4,9) if x%2 == 0]
# a 的内容为[3, 5, 7, 9]
a = [x for x in range(3,10) if x%2 != 0]

公共方法

image-20250829194428668

  1. 练习

定义一个列表变量,内容如下:

["张飞", "刘备", "关羽", "刘邦", "刘老二" ,"曹操" ]

查找列表中是否有刘备,如果有将其删除

list = ["张飞", "刘备", "关羽", "刘邦", "刘老二" ,"曹操" ] 
if "刘备" in list:
    list.remove("刘备")
  1. 练习

定义一个列表变量,内容如下

[3, 5, 67, 2, 34, 12, 5, 11]

显示列表中最大值

list = [3, 5, 67, 2, 34, 12, 5, 11]
print(max(list))

2.元组

  • Tuple(元组)与列表类似,不同之处在于元组的元素不能修改;

  • 元组⽤ () 定义

# 定义一个元组,名字叫 tuple1,有三个元素
tuple1 = ("孙策", 28, 1.75)
# 定义一个空元组,名字叫 tuple2
tuple2 = ()
#元组只有一个元素时,元素后面需要添加逗号
tuple3 = (50,)
#定义元组时, ()可以省略
tuple4 = "张飞",29
tuple5 = 39,

一、元组的常用方法

元组的常用方法与列表类似,元组的内容不可修改,所以没有增加、修改和删除相关方法。

二、循环遍历元组

与遍历列表类似

三、元组和列表之间的转换

  • 把列表转化为元组目的是让列表不可以被修改,以保护数据安全
  • 使⽤ list 函数可以把元组转换成列表
  • 使用tuple函数可以把列表转换成元组
list1 = ["刘备","关羽","张飞"]
# 通过 tuple 函数把 list1 转换为元组
tuple1 = tuple(list1)

tuple2 = ("孙权","周瑜","鲁肃")
# 通过 list 函数把 tuple2 转换为列表
list2 = list(tuple2)

1.练习

list1 = ["刘备","关羽","张飞"]

tuple1 = ("曹操", "周瑜")

将元组 tuple1 的元素追加到 list1 元素后面

list1 = ["刘备","关羽","张飞"]
tuple1 = ("曹操", "周瑜")
list1.extend(tuple1)
print(list1)

3.集合

  • 集合用{}定义

    • 创建空集合 变量名 = set()
     set1 = set()
    
  • 集合和列表的区别:

    • 列表是有序的对象集合,即元素的存储顺序和插入顺序一致,且每个元素都有明确的位置(索引)

    • 集合是无序的对象集合

    • 同一个集合内值不允许重复

一、集合常用操作

image-20250830152714615

1.练习

定义一个空集合变量,通过 input 函数,向集合里输入任意 5 个整数

显示集合中的最小值

demo_set = {int(input())for _ in range(5)}
print(min(demo_set))

二、循环遍历集合

遍历就是依次从集合中获取所有值

set1 = {"张飞", 33, 1.75}
for n in set1:
	print(n)

1.练习

定义一个空集合变量,通过 input 函数,向集合里输入任意 3 个字符串

遍历集合,显示集合中所有的字符串

demo_set = {input() for _ in range(3)}
print("".join(demo_set))

4.字典

  • dictionary(字典)通常用于存储"键值对"数据, 键与值之间用冒号分隔

    • 键key是索引,同一个字典内,键名不能重复
    • value是数据
  • 字典用{}定义

    • 通过 变量名= {} 创建一个空字典
    #空字典
    dict1 = {}
    
  • 字典与集合的区别

    • 集合中只有值
    • 字典是包含键与值的键值对
    # 定义一个字典,包含两个键值对
    dict1 = {"name":"灯火阑珊","age":18}
    

一、字典常用操作

image-20250830154812236

1.练习

dict1 = {"name":"周瑜","age":32,"id":"001"}

字典中增加一个键值对’sex’:’男’;

删除键’id’;

将键’age’的值修改为 26。

dict1 = {"name":"周瑜","age":32,"id":"001"} 
dict1["sex"]="男"
dict1.pop("id")
dict1["age"]=26

二、循环遍历字典

遍历就是依次从字典中获取所有键值对

# 定义一个字典 dict1,包含三个键值对
dict1 = {"name":"刘备", "age":32, "height":1.75}
# n 为键,通过 dict1[n]可以得到键对应的值
for n in dict1:
    print("键=%s,值=%s" %(n,str(dict1[n])))

三、循环遍历字典二----拆包方式

  • items方法返回包含字典键值对的元组
  • 通过对元组拆包的方式获取键和值
dict1 = {"name":"刘备", "age":32, "height":1.75}
for key,value in dict1.items():
    print(f"key={key},value={value}")

1.练习

dict1 = {"a":23,"b":4,"c":9,"d":3,"e":12}

循环遍历字典, 显示字典每个键和键对应的值

dict1 = {"a":23,"b":4,"c":9,"d":3,"e":12}
for key,value in dict1.items():
    print(f"key:{key},value:{value}")

5.字符串

字符串就是一串字符,是编程语言中表示文本的数据类型

在Python中可以使用一对双引号"或一对单引号'定义一个字符串

一、遍历字符串中每个字符

可以使⽤ for 循环遍历 字符串中每⼀个字符

str1 = "灯火阑珊BLOG"
for n in str1:
    print(n)

二、字符串的常⽤方法

image-20250830161934027

1.练习

通过 input 函数,输入一个字符串,判断字符串是否可以转化为整数,如果不可以转化, 显示"请输入数字"

str1 = input()
try:
    num = int(str1)
    print(f"字符串{str1}可以转换为整数{num}")
except:
    print("请输入数字")

三、格式化字符串

%被称为格式化操作符,专门用于处理字符串中的格式

包含%的字符串,被称为格式化字符串

image-20250830163113285

1.练习

id = 1

name = "刘备"

weight = 80.2

tel = "13912345678"

以上变量,输出结果如下

image-20250830163332777

id = 1
name = "刘备"
weight = 80.2
tel = "13912345678"

print('*'*20)
print(f"编号:{id:06d}")
print(f"姓名:{name}")
print(f"体重:{weight:.3f}")
print(f"电话:{tel}")
print('*'*20)

6.字符串的切⽚

切⽚⽅法适⽤于字符串、列表、元组 ;

切片使用索引值来限定范围,从一个大的字符串切出小的字符串

字符串、列表、元组都是有序的集合,都能通过[索引]获取对应的数据

一、切片语法

字符串[开始索引:结束索引:步长]

从头开始,开始索引数字可以省略,冒号不能省略

到末尾结束,结束索引数字可以省略,冒号不能省略

  • 索引的顺序和倒序

在 Python 中不仅⽀持顺序索引,同时还⽀持倒序索引

所谓倒序索引就是从右向左计算索引

str1 = "Hello"
reverse_str = str1[::-1]
print(reverse_str)

章节练习题

1.定义一个列表,内容为 "刘备", "男", 30

  • 在列表最后添加元素”玄德”

  • 在列表开始插入元素”100”

  • 删除元素”男”

  • 将列表所有元素反转

  • 循环遍历列表中每个元素

list = ["刘备", "男", 30]
list.append("玄德")
list.insert(0,100)
list.remove("男")
list.reverse()
for x in range(len(list)):
    print(list[x])

2.通过列表推导式,生成一个包含从30到99之间所有整数的列表

x = [x for x in range(30,100)]

3.定义一个元组变量,内容为("张飞",12,15). 将元组转化为列表后, ”张飞”修改为”关羽”

tuple = ("张飞",12,15)
list = list(tuple)
list[list.index("张飞")] = "关羽"
print(list)

4.定义一个集合变量,内容为{"曹操", "刘备", 100} . 向集合中添加元素”诸葛亮”,删除元素”刘备”,并循环遍历集合,显示集合中每个元素

demo = {"曹操",  "刘备", 100}
demo.add("诸葛亮")
demo.remove("刘备")
for item in demo:
    print(item)

5.定义一个字典变量,内容为{"id":10, "name":"周瑜", "age":30}.

添加键值对”sex”:”男”,

将age的值修改为25,

遍历显示字典中所有的键和值

demo = {"id":10, "name":"周瑜", "age":30}
demo["sex"]="男"
demo["age"]=25
for key,value in demo.items():
    print(f"key={key},value={value}")

5.判断 "gongfuxong@itcast.cn" 字符串是否包含字符@

str = "gongfuxong@itcast.cn"
if "@" in str:
    print("hello")

6.将字符串"helloWorld" 中的 "World" 更改为 "Apple"

original_str = "helloWorld"
print(original_str.replace("World","Apple"))

7.将字符串 "abEsaAuY" 中的大小写字母反转

str1 = "abEsaAuY"
print(str1.swapcase())

8.计算字符串 "9*7+12-5" 的计算结果

str = "9*7+12-5"
print(eval(str))