作为新手自学Python的第四天,技术低微,希望可以通过这种方式督促自己学习。
个人学习环境:python3.9,PyCharm 2021.3.2 (Community Edition)
———————————————————————————————————————————
变量可以存储一个元素,列表是一个“大容器”可以存储N多个元素
相当于其他语言的数组
列表需要使用中括号[ ],元素之间使用英文的逗号,进行分隔
# 列表的创建方式
"""第一种方式,使用[]"""
lst = ['hello', 'world', 98]
"""第二种方式,使用内置函数list()"""
lst2 = list(['hello', 'world', 98])
列表元素按顺序有序排序
索引映射唯一个数据
列表可以存储重复数据
任意数据类型混存
根据需要动态分配和回收内存
index():
·如果列表中存在N个相同元素,只返回相同元素中第一个元素的索引
·如果查询的元素不在列表中,则报错
·还可以在指定的start和stop之间进行查询
lst = ['hello', 'world', 98, 'hello']
print(lst.index('hello')) #如果列表中有相同元素只返回列表中相同元素的第一个元素的索引
print(lst.index('hello', 1, 4)) #输出在列表中从索引为1开始直到索引为4为止中,'hello'元素的索引
获取列表中的多个元素——切片操作
切片的结果 | 原列表的拷贝 | ||
切片的范围 | [start, stop) | ||
切片操作中step默认为1,可省略 | 省略后简写为[start: stop] | ||
step为正数 | [:stop:step] | 切片的第一个元素默认是列表的第一个元素 | 从start开始往后计算切片 |
[start::step] | 切片的最后一个元素默认是列表的最后一个元素 | ||
step为负数 | [:stop:step] | 切片的第一个元素默认是列表的最后一个元素 | 从start开始往前计算切片 |
[start::step] | 切片的最后一个元素默认是列表的第一个元素 |
lst = [10, 20, 30, 40, 50, 60, 70, 80]
# start=1,stop=6,step=1
print(lst[1:6:1])
切片操作默认为1,如不写就默认为1,包括start、step,stop如不填写则默认为全集
step为负数的一个例子,或许可以帮助理解
# def定义函数
def reverseWords(input):
# 通过空格将字符串分隔符,把各个单词分隔为列表
inputWords = input.split(" ")
# 翻转字符串
# 假设列表 list = [1, 2, 3, 4],
# list[0]=1, list[1]=2 ,而-1表示最后一个元素 list[-1]=4(与list[3]=4一样)
# inputWords[-1::-1]有三个参数
# 第一个参数 -1 表示最后一个元素
# 第二个参数为空,表示移动到末尾列表
# 第三个参数为步长, -1 表示逆向
inputWords = inputWords[-1::-1]
# 重新组合字符串
output = ' '.join(inputWords)
return output
if __name__ == "__main__":
input = 'I like runoob'
rw = reverseWords(input)
print(rw)
1)判断指定元素在列表中是否存在
元素 in 列表名
元素 not in 列表名
2)列表元素的遍历
for 迭代变量 in 列表名:
操作
print('p' in 'python')
"""结果为Ture"""
print('k' not in 'python')
"""结果为True"""
方法/其他 | 描述 |
append() | 在列表的末尾添加一个元素 |
extend() | 在列表的末尾至少添加一个元素 |
insert() | 在列表的任意位置添加一个元素 |
切片操作 | 在列表的任意位置添加N个元素 |
# 向列表的末尾添加一个元素
lst = [10, 20, 30]
lst.append(100)
lst2 = ['hello', 'world']
lst.append(lst2) # 将lst2作为一个元素添加到列表的末尾
"""
结果为:
[10, 20,30, 100, ['hello', 'world']]
"""
# 列表的末尾至少添加一个元素
lst.extend(lst2)
"""
结果为:
[10, 20, 30, 100, 'hello', 'world']
"""
# 在任意位置上添加一个元素
lst.insert(1, 90)
"""
结果为:
[10, 90, 20, 30, 100, 'hello', 'world']
"""
# 在列表的任意位置添加N多个元素
lst3 = [True, False, 'hello']
lst[1:]=lst3
"""
结果为:
[10, True, False, 'hello']
"""
方式/其他 | 描述 |
remove() | 每次删除一个元素 |
如有重复元素,只删除第一个元素 | |
元素不存在则报错 | |
pop() | 删除一个指定索引位置上的元素 |
指定索引不存在时不报错 | |
如不指定索引,则删除最后一个元素 | |
切片操作 | 一次至少删除一个元素 |
clear() | 清空列表 |
del | 删除列表 |
lst = [10 ,20 ,30, 40, 50, 60, 30]
lst.remove(30) #从列表中移除一个元素,如果有重复元素只移除第一个元素
"""
结果为:
[10, 20, 40, 50, 60, 30]
"""
# pop()根据索引移除元素
lst.pop(1)
"""
结果为:
[10, 40, 50, 60, 30]
"""
lst.pop()
"""
结果为:
[10, 40, 50, 60]
"""
# 切片操作,删除列表元素会产生一个新的列表对象
new_list = lst[1:3]
print(lst)
print(new_list)
"""
结果为:
[10, 40, 50, 60]
[40, 50]
"""
# 不产生新的列表对象,而是删除原列表中的内容
lst[1:3] = []
"""
结果为:
[10, 60]
"""
# 清楚列表中的所有元素
lst.clear()
"""
结果为:
[]
"""
#删除列表对象
del lst
"""
此时lst对象已经被删除,如果输出lst对象会报错
"""
为指定索引的元素赋予一个新值
为指定的切片赋予一个新值
lst = [10, 20, 30, 40]
# 一次修改一个值
lst[2] = 100
print(lst)
"""
结果为:
[10, 20, 100, 40]
"""
lst[1:3] = [300, 400, 500, 600]
print(lst)
"""
结果为:
[10, 300, 400, 500, 600, 40]
"""
常见方法:
1)调用sort()方法,列有中的所有元素默认按照从小到大的顺序进行排序,可以指定reverse = True,进行降序排序
lst = [20, 40, 10, 98, 54]
lst.sort()
print(lst)
"""
结果为:
[10, 20, 40, 54, 98]
"""
sort()排序是在原列表的基础上,不会创建新列表
# 通过指定关键字参数,将列表中的元素进行降序排序
lst.sort(reverse = True) # reverse = True 表示降序排序,reverse = False 表示升序排序
print(lst)
"""
结果为:
[98, 54, 40, 20, 10]
"""
2)调用内置函数sorted(),可以指定reverse = True,进行降序排序,原列表不发生改变
使用内置函数sorted()对列表进行排序,将产生一个新的列表对象
lst = [20, 40, 10, 98, 54]
new_list = sorted(lst)
print(new_list)
"""
结果为:
[10, 20, 40, 54, 98]
"""
# 通过指定关键字参数,将列表中的元素进行降序排序
desc_list = sorted(lst, reverse = True)
print(desc_list)
"""
结果为:
[98, 54, 40, 20, 10]
"""
简称“生成列表的公式”
语法格式
lst = [ i for i in range(1, 10) ]
print(lst)
"""
结果为:
[1, 2, 3, 4, 5, 6, 7, 8, 9]
"""
lst = [ i*i for i in range(1, 10) ]
print(lst)
"""
结果为:
[1, 4, 9, 16, 25, 36, 49, 64, 81]
"""
注意事项:“表示列表元素的表达式”中通常包含自定义变量