关于列表:就是储存数据的一种容器

格式 : [元素1,元素2,元素3,.....]

列表(list)是Python 开发过程中最常用的数据类型之一,特点如下:

1、列表由一个或者多个数据构成,数据的类型可以不相同也可以相同;

2、列表中的数据需要写在 [ ] 中括号内部,数据与数据之间用逗号隔开;

3、列表是一个有序的积合,下标索引默认从 0 开始,和字符串类似;

代码示例:

# 定义一个空列表
list1 = list()
print("list1 :",list1)
# 输出结果:list1 : []

# 定义一个整数类型的列表赋值给list2
list2 = [1,2,3,4]
print("list2 : %s" % list2)
# 输出结果:list2 : [1, 2, 3, 4]

# 定义一个字符串类型的列表赋值给list3
list3 = ["a","b","c"]
print("list3 : {}" .format(list3))
# 输出结果:list3 : ['a', 'b', 'c']

# 定义一个不同数据类型的列表赋值给list4
list4 = [0,"hello",True]
print("list4 : {0}" .format(list4))
# 输出结果:list4 : [0, 'hello', True]

添加数据

代码示例:

# 定义一个列表
nums = [11,22,33,'啦啦啦啦','老王',23.7]

# append 在列表的末尾添加数据
nums.append("老王")
print(nums)
# 输出结果:[11, 22, 33, '啦啦啦啦', '老王', 23.7, '老王']

# insert 在指定的位置插入元素
nums.insert(3, "葫芦娃")
print(nums)
# 输出结果:[11, 22, 33, '葫芦娃', '啦啦啦啦', '老王', 23.7, '老王']

# 直接用 + 号拼接
nums1 = ["牛魔王","健力宝","红孩儿"]
print(nums + nums1)
# 输出结果:[11, 22, 33, '葫芦娃', '啦啦啦啦', '老王', 23.7, '老王', '牛魔王', '健力宝', '红孩儿']

# extend 合并两个列表,对 nums1 没有影响
nums.extend(nums1)
print(nums)
# 输出结果:[11, 22, 33, '葫芦娃', '啦啦啦啦', '老王', 23.7, '老王', '牛魔王', '健力宝', '红孩儿']

删除数据

代码示例:

# 定义一个列表
nums = [11,22,33,'啦啦啦啦','老王',23.7]

# pop 从列表最后删除一个元素
nums.pop()
nums.pop()
nums.pop()
print(nums)
# 输出结果:[11, 22, 33]

# remove 删除指定的内容,默认从左往右的第一个
nums.remove("老王")
print(nums)
# 输出结果:[11, 22, 33, '啦啦啦啦', 23.7]

# del 删除指定列表的指定下标的数据
del nums[2]
print(nums)
# 输出结果:[11, 22, '啦啦啦啦', '老王', 23.7]

修改数据

直接根据索引值找到列表中对应的数据,然后赋值即可

列表名[下标] = 新值

代码示例:

# 定义一个列表
nums = [11,22,33,'啦啦啦啦','老王',23.7]

# 列表名[下标] = 新值
nums[0] = 88
print(nums)
# 输出结果:[88, 22, 33, '啦啦啦啦', '老王', 23.7]

查询数据

直接根据索引值找到列表中对应的数据即可

查询元素的方法:

1、通过下标查询,和字符串下标查询基本一致;

2、XX in 列表:判断元素是否存在列表中;

3、XX not in 列表:判断元素是否不存在列表中;

代码示例:

# 定义一个列表
nums = [11,22,33,'啦啦啦啦','老王',23.7]

# 查询下标为3的元素
print(nums[3])
# 输出结果:啦啦啦啦

# 查询从列表下标1开始到2结束的数据,不含3
print(nums[1:3])
# 输出结果:[22, 33]

# 查询从列表开始到结束的数据
print(nums[:])
# 输出结果:[11, 22, 33, '啦啦啦啦', '老王', 23.7]

# 反转列表
print(nums[::-1])
# 输出结果:[23.7, '老王', '啦啦啦啦', 33, 22, 11]

# reverse 对列表进行反转
nums.reverse()
print(nums)
# 输出结果:[23.7, '老王', '啦啦啦啦', 33, 22, 11]

# 查询从右往左数,下标为 -1 的元素
print(nums[-1])
# 输出结果:23.7

# 查询下标为 1 到 4 ,步长为3的元素
print(nums[1:5:3])
# 输出结果:[22, '老王']

# sort 方法从小到大排序
num2 = [11,55,33]
num2.sort()
print(num2)
# 输出结果:[11, 33, 55]

# 判断'老王xxx'是否存在nums列表中
if '老王xxx' in nums:
    # 如果存在,则执行这里的程序
    print("老王存在")
else:
    #如果不存在,则执行这里的程序
    print("不存在")
# 输出结果:不存在

# 判断'老王'是否不存在nums列表中
if '老王' not in nums:
    # 如果不存在,则执行这里的程序
    print("老王不存在")
else:
    # 如果存在,则执行这里的程序
    print("存在")
# 输出结果:存在

# 遍历列表方式一:
for i in  nums:
    print(i)
# 输出结果:
# 11
# 22
# 33
# 啦啦啦啦
# 老王
# 23.7

# 遍历列表方式二:
for i in range(len(nums)):
    # 内置函数 type()获取数据类型
    print("list2列表中索引值{}对应的数据是{},数据类型是:{}".format(i ,nums[i] ,type(nums[i])))
# 输出结果:
# list2列表中索引值0对应的数据是11,数据类型是:<class 'int'>
# list2列表中索引值1对应的数据是22,数据类型是:<class 'int'>
# list2列表中索引值2对应的数据是33,数据类型是:<class 'int'>
# list2列表中索引值3对应的数据是啦啦啦啦,数据类型是:<class 'str'>
# list2列表中索引值4对应的数据是老王,数据类型是:<class 'str'>
# list2列表中索引值5对应的数据是23.7,数据类型是:<class 'float'>

列表的排序

可以通过使用 str 函数或者 reverse 函数对列表 list 进行排序

代码示例:

# 对数字排序
#定义一个列表
list1 = [10,2,30,4,5,6,7]
print("排序之前:",list1)
# 输出结果:排序之前: [10, 2, 30, 4, 5, 6, 7]

# 默认从小到大依次排序
list1.sort()
print("排序之后:%s" % list1)
# 输出结果:排序之后:[2, 4, 5, 6, 7, 10, 30]

# 该方法为列表反转,也就是说对升序后的列表进行反转就是降序
list1.reverse()
print("排序之后:{}".format(list1))
# 输出结果:排序之后:[30, 10, 7, 6, 5, 4, 2]

#对字符串排序
list2 = ["f","e","c","a"]
print("排序之前:",list2)
# 输出结果:排序之前: ['f', 'e', 'c', 'a']

# 默认从小到大依次排序
list2.sort()
print("排序之后:%s" % list2)
# 输出结果:排序之后:['a', 'c', 'e', 'f']

# 该方法为列表反转,也就是说对升序后的列表进行反转就是降序
list2.reverse()
print("排序之后:{}".format(list2))
# 输出结果:排序之后:['f', 'e', 'c', 'a']

字符串 str 与列表的互换

使用 list(str),强制将 str 字符串转为 list 列表

代码示例:

# 定义字符串
str1 = "hello world"

# 强制将str1 字符串转为列表 list
list1 = list(str1)  
print("str1:{},数据类型:{}".format(str1,type(str1)))
# 输出结果:str1:hello world,数据类型:<class 'str'>
print("list1:{},数据类型:{}".format(list1,type(list1)))
# 输出结果:list1:['h', 'e', 'l', 'l', 'o', ' ', 'w', 'o', 'r', 'l', 'd'],数据类型:<class 'list'>

使用 join 函数将列表直接转为字符串

代码示例:

# 定义列表
list = ['我','喜','欢','你']
# 用 join 函数,直接将列表转换成字符串
str = ''.join(list)
print(str)
# 输出结果:我喜欢你

列表推导式

列表推导式是条件推导式和循环一起配合使用的,并返回一个列表 list ,并且整个表达式需要在 [ ] 中括号内,因为返回值也是列表 list 。

语法规则:

语法一:
    value1:在for循环中,如果x的值满足条件表达式condition(即条件表达式成立),返回value1;条件表达式不成立则不返回
    x:for循环中变量
    data:一个序列(比如:列表/元组/字符串等)
    condition:条件表达式

格式1:[value1 for x in data if condition]

语法二:
    value2:在for循环中,如果x的值满足条件表达式condition(即条件表达式成立),返回value1;条件表达式不成立则返回value2
    x:for循环中变量
    data:个序列(比如:列表/元组/字符串等)

格式2:[value1 if condition else value2 for x in data]

代码示例:

# 获取 0 ~ 20 的所有偶数并且乘以 10,并返回所有计算之后的结果
# 定义列表保存
numbers = []
# 传统写法
for i in range(21):
    if i % 2 ==0:
        j = i *10
        numbers.append(j)
print(numbers)

# 列表推导式写法
numbers1 = [i*10 for i in range(21) if i % 2 ==0]
print(numbers1)
# 列表推导式解析:
# value1: 当条件成立的时候执行
# i 循环中的变量
# data : 序列
# if :判断的条件
# 格式:value1 + for + 循环中的变量 + in + data序列 + if + 判断条件

# 输出结果:[0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200]

# 将 0 ~ 20 的偶数乘以 10 ,奇数乘以 100 ,并返回所有计算之后的结果。
# 传统写法
numbers3 = []
for i in range(21):
    if i % 2 ==0:
        j = i *10
        numbers3.append(j)
    else:
        j = i * 100
        numbers3.append(j)
print(numbers3)

# 列表推导式写法
numbers4 = [i*10 if i %2==0 else i*100 for i in range(21)]
print(numbers4)
# 列表推导式解析:
# value1: 在for循环中,if判断条件成立执行的代码
# value2 :在for玄幻中,if判断条件不成立执行的代码
# 格式:value1 + if + 判断条件 + else + value2 + for + 循环中的变量 + in + data序列 

# 输出结果:[0, 100, 20, 300, 40, 500, 60, 700, 80, 900, 100, 1100, 120, 1300, 140, 1500, 160, 1700, 180, 1900, 200]

案例:将列表转换成字符串

代码示例:

# 定义列表
list = ["你","是","不","是","我","最","疼","爱","的","人"]
# 将列表中的每一个元素取出来
print("".join(list)) 
# 输出结果:你是不是我最疼爱的人

案例:把两个列表合并成一个字典,第一个列表元素为key,第二个列表元素为value

代码示例:

# 定义列表
list1 = ["姓名","年龄","地址"]
list2 = ["老王",18,"北京"]

# 用 zip 把两份数据合并成一份数据
data = zip(list1,list2)

# for i in data:
#     print(i)
# """
# 输出结果:
# ('姓名', '老王')
# ('年龄', 18)
# ('地址', '北京')
# zip输出的是一个个元祖
# """

# 把数据转换成字典
dict = dict(data)
print("dict的类型是{},{}".format(type(dict),dict))
# 输出结果:dict的类型是<class 'dict'>,{'姓名': '老王', '年龄': 18, '地址': '北京'}