# 创建时间:2023/6/10 # 创建目的:学习python # coding:utf-8 """ 列表: .变量可以存储一个元素,而列表是一个“大容器”可以存储N多个元素,程序可以方便地对这些数据进行整体操作 .列表是一个有序且可更改的集合,并且是最常用的 Python 数据类型。在 Python 中,列表是使用方括号 [] 编写的。 .在Python中,列表中元素的数据类型可以不同,可以包含整数、浮点数和复数等,当然,也可以包含列表、元组、字典和集合等。 .创建一个列表,只需要把逗号分隔的不同数据项使用方括号 [] 括起来即可。 .可以使用 list() 构造函数创建列表:(注意:在使用 list() 函数创建列表时,一定要注意双括号(())或([])。) .下标索引访问元组分为两大类,即正向索引和反向索引,格式为 list_name[i] ,其中,list_name 表示列表名, i表示索引值,i可以是正数(正向索引)也可以是负数(反向索引)。list_name[0]表示列表的第一个元素, list_name[-1]则表示列表的最后一个元素。 当指定索引不存在的时候,抛出错误indexError .我们既可以使用下标索引访问列表中的某个元素(得到一个元素的值),也可以使用切片访问列表中的一组元素(得到是子列表)。 使用切片访问列表的格式为 list_name[start : end : step] ,其中,start 表示起始索引,end 表示结束索引,step 表示步长。 在使用切片访问列表元素时,list_name[strat : end : step],[start:end] 是左闭右开区间,即访问不了 end 代表的元素。 列表的特点: .列表按顺序有序排列 .索引映射唯一数据 .列表可以存储重复数据 .任意数据类型缓存 .根据需要动态分配和回收内存 """
list1 = ["code", "亦向枫", 123]
list2 = list(("code", "亦向枫", 123))
list3 = list(["code", "亦向枫", 123])
print(type(list2)) # <class 'list'>
print(type(list3)) # <class 'list'>
print(list1[1])
print(list1[0]) # list1第一个元素
print(list1[-1]) # list1最后一个元素
print(list1[0:2:1]) # ['code', '亦向枫']
# for 循环遍历列表
for i in list1:
print(i)
"""
code
亦向枫
123
"""
# 要确定列表中是否存在指定的项,我们可以使用 in 关键字:
print(123 in list1) # True
# 使用 in 关键字检查列表中是否存在指定项时,如果存在,则返回 True ;反之,则返回 False 。
# 当我们创建列表后,我们可以对列表中的数据项进行修改或更新
list1[1] = "亦宸"
print(list1) # ['code', '亦宸', 123]
# 当我们要确定一个列表有多少项目(元素)时,可以使用len()函数。
print(len(list1)) # 3
# 我们可以使用 del list_name[i] 来删除某个指定元素,其中 list_name 表示列表名,i 表示指定值的索引值。
del list1[0]
print(list1) # ['亦宸', 123]
# del 函数不仅可以实现删除某个元素,还可以删除整个列表。
# del list2
# print(list2)
# 当我们使用 del 函数删除某列表后,再使用 print() 函数打印输出时,会报错NameError: name 'list_de' is not defined,表明该列表未被定义。
""" 内置方法: .append() 方法用于在列表末尾添加新的对象(任何类型(字符串、数字、对象等)的元素。) 语法:list.append(element) .insert() 方法用于将指定对象插入列表的指定位置。 语法:list.insert(position, element) .append() 只能在末尾处添加元素或列表,insert() 可以在任意位置添加元素或列表。 .extend() 方法用于在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)。 语法:list.extend(iterable) iterable:必需。任何可迭代对象(列表、集合、元组等)。 .count() 方法用于统计某个元素在列表中出现的次数。 list.count(value) .index() 方法用于从列表中找出某个值第一个匹配项的索引位置。 list.index(element) 当被搜索值在列表中多次出现时,仅返回首次出现的位置。 .sort() 方法用于对原列表进行排序,如果指定参数,则使用比较函数指定的比较函数。 语法:list.sort(reverse=True|False, key=myFunc) reverse=True 将对列表进行降序排序。默认是 reverse=False。 .copy() 方法用于复制列表,类似于 a[:]。 复制(制作副本)的另一种方法是使用内置函数 list() .颠倒列表顺序 reverse() reverse() 方法用于反向列表中元素。 .pop() 方法用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。 list.pop(pos) pos:可选。数字,指定需删除元素的位置。默认值 -1,返回最后的项目。 .remove() 方法用于移除列表中某个值的第一个匹配项。 当被删除的元素在列表中存在多个时,默认删除首次出现的那个。 clear() 方法用于清空列表,类似于 del a[:]。 clear() 方法的作用是清空列表,执行结束后对其使用 print() 打印输出时,会输出 [] ,说明列表还存在,只是空列表而已。 del 函数的作用是删除列表,执行结束后对其使用 print() 打印输出时,会报错 NameError: name 'word' is not defined """
list0 = [1, "王老五", [1, 2, 3], "python"]
list0.append([4, "张老三", "learning"])
print(list0) # [1, '王老五', [1, 2, 3], 'python', [4, '张老三', 'learning']]
list0.insert(0, "亦向枫")
print(list0) # ['亦向枫', 1, '王老五', [1, 2, 3], 'python', [4, '张老三', 'learning']]
dict1 = {'name': 'pink', 'gender': True}
list0.extend(dict1)
print(list0) # ['亦向枫', 1, '王老五', [1, 2, 3], 'python', [4, '张老三', 'learning'], 'name', 'gender']
print(list0.count(1)) # 1
print(list0.index("python")) # 4
x = list0.copy()
print(x) # ['亦向枫', 1, '王老五', [1, 2, 3], 'python', [4, '张老三', 'learning'], 'name', 'gender']
list = list(list0)
print(list) # ['亦向枫', 1, '王老五', [1, 2, 3], 'python', [4, '张老三', 'learning'], 'name', 'gender']
list.reverse()
print(list) # ['gender', 'name', [4, '张老三', 'learning'], 'python', [1, 2, 3], '王老五', 1, '亦向枫']
list0.pop(1)
print(list0) # ['亦向枫', '王老五', [1, 2, 3], 'python', [4, '张老三', 'learning'], 'name', 'gender']
list0.remove([1, 2, 3])
print(list0) # ['亦向枫', '王老五', 'python', [4, '张老三', 'learning'], 'name', 'gender']
list.clear()
print(list) # []
列表生成式:是python内置的比较简单但是功能强大的用于生成list的生成式
语法: [元素 for循环 if语句]
说明: 元素和for循环不能省略,但是,if语句可以省略
# 生成一个列表,[1,4,9,16,25,36,49,64,81]
使用列表生成式, 会发现就会代码会少很多
list4 = [i ** 2 for i in range(1, 10) if i % 2 == 1]
print(list4)
# 生成一个列表,列表中的元素为1-100以内3的倍数
# 方式一:传统方式
list5 = []
for i in range(1, 100):
if i % 3 == 0:
list5.append(i)
print(list5)
# 方式二:使用列表生成式
list6 = [i for i in range(1, 100) if i % 3 == 0]
print(list6)
# 列表生成式可以书写多个for循环,表示for循环的嵌套
# 方式一:传统方式
list7 = []
for i in "abc":
for j in "xyz":
list7.append(i + j)
print(list7)
# 方式二:使用列表生成式
list8 = [i + j for i in "abc" for j in "xyz"]
print(list8)
在for循环中可以定义多个变量
需求:有个字典 dict1 = {'a': 10, 'b': 20, 'c': 30} , 需要得到这种列表样子: ['a10', 'b20', 'c30']
dict1 = {'a': 10, 'b': 20, 'c': 30}
# 方式一:传统方式
list9 = []
for key, value in dict1.items():
list9.append(str(key) + str(value))
print(list9)
# 方式二:使用列表生成式
list10 = [key + str(value) for key, value in dict1.items()]
print(list10)
"""
注意:列表生成式相比较普通列表的生成式,比较简洁,
但是只能实现简单的逻辑,否则代码的可读性降低
"""
# .使用列表生成式将一个列表元素中的小写字母转换为大写,生成一个新的列表
list_1 = ['hello', 10, 'Abc', 'asBd', True]
# 方式一:
newlist_1 = []
for s in list_1:
if isinstance(s, str): # isinstance()来判断是不是str类型
newlist_1.append(s.upper())
print(newlist_1)
# 方式二:
newlist_2 = [s.upper() for s in list_1 if isinstance(s, str)]
print(newlist_2)