Python基础:列表

目录

一、列表对象的创建

 二、列表的特点

 三、查询列表中的元素

(1)获取指定元素的索引

(2)获取列表中指定的元素

(3)获取列表中的多个元素_切片操作

(4)列表元素的判断

(5)列表元素的遍历

四、列表元素的增、删、改操作

(1)列表元素的添加

(2)列表元素的删除

(3)列表元素的修改

五、列表元素的排序

六、列表生成式


为什么需要列表?

变量可以存储一个元素,而列表是一个“大容器”可以存储N多个元素,程序可以方便地对这些数据进行整体操作

列表相当于其他语言中的数组

一、列表对象的创建

列表需要使用[ ],元素之间使用逗号进行分隔,例如:

lst = ['大圣',‘孙悟空’]

列表的创建方式:

  • 使用中括号
  • 使用内置函数list()

案例:

# 第一种,使用lst
lst = ['hello', 'word', 'this is list.']
print(lst)
print(type(lst))
print(id(lst))
# 第二种,使用内置函数list
lst1 = list(['hello', 'word', 'this is list'])
print(lst1)
print(type(lst1))
print(id(lst1))

运行结果:

 二、列表的特点

  • 列表元素按顺序有序排序

  • 索引映射唯一一个数据

  • 列表可以存储重复数据

  • 任意数据类型可以混存

  • 根据需要动态分配和回收内存

案例:

lst = ['hellow', 'word', '121', '789', '121']  # 列表数据可重复
print(lst)
print(lst[0])
print(lst[2])
print(lst[-1])
lst1 = list(['hellow', 'word', '789', '123', '123'])
print(lst1)
print(lst1[0])
print(lst1[-1])

运行结果:

 三、查询列表中的元素

(1)获取指定元素的索引

通多index()函数去获取

  • 如查列表中存在N个相同元素,只会返回相同元素中的第一个元素的索引
  • 如查询的元素在列表中不存在,运行结果则会出现ValueError
  • 还可以在指定的start和stop之间进行查找

案例:

# index的使用中需要注意,使用的是“.”而不是“,”,否则容易报错
lst = ['hello', 'word', '999', 'hello']
print(lst.index('hello'))  # 如果说列表中有相同的元素,那么其只会返回列表中的第一个元素
# print(lst.index('box'))  # 查找列表中所不存在的元素时,会出现报错的情况
# print(lst.index('hello',1,3))  # 查找该元素时给定了指定的范围,依旧会报错,是因为在这个范围内是没有这个元素的
print(lst.index('hello', 1, 4))  # 此为正确的表示

运行结果:

(2)获取列表中指定的元素

获取列表中的单个元素

  • 正向索引从0到N-1,例如:lst[0]
  • 逆向索引从-N到-1,例如:lst[-N]
  • 指定索引不存在,运行结果则会出现IndexError

案例:

# index可以用来获取索引数,反之则可以利用索引数去获取相应的元素
# 当索引的元素不在这个范围内则会出现报错
lst1 = ['hello', 'word', 'cat', 89, 'dog', 578]
print(lst1[4])
print(lst1[-3])

运行结果:

 

(3)获取列表中的多个元素_切片操作

当进行多个元素获取时,采用的是切片操作

语法格式:

列表名[start:stop:step]

其中采用的是[ ),即左闭右开的格式范围,step是步长

案例:

lst = [12, 23, 24, 25, 78, 34, 79, 90]
# 现在想要获取start=1,stop=5,step=1
print(lst[1:5:1])
lst1 = lst[1:5:1]
print('原切片:', id(lst))
print('切的片段:', id(lst1))
# 现在想要获取一个没有初始值的,即start=,stop=6,step=2
print(lst[:6:2])
# 现在获取一个没有stop值的数据,即start=1,stop=,step=3
print(lst[1::3])
print(lst[0::3])
# 现在想要获取一个没有step值的,即star=1,stop=6,step=
print(lst[1:6:])
# 现在获取一个没有初始值和起始值的一组结果
print(lst[::1])   # 结果表明,初始值和起始值没有要求时,直接采用默认的方式
print('---------step为负数时--------')
# 出现step为负数的情况时,原列表会逆序输出
print('原列表:', lst)
# print(lst[::-1])
print('step为负数时:', lst[::-1])
# 当stat=7,stop=2,step=-1
print(lst[6:2:-1])  # 可以理解为相反方向
print(lst[7::-2])

运行结果:

(4)列表元素的判断

利用in和not in判断元素是否在列表中

案例:

# 判断字符串
print('i' in 'list')
print('m' not in 'list')
# 判断元素是否在列表中
lst = [12, 23, 44, 32, 55, 65, 34, 43]
print(12 in lst)
print(23 not in lst)

运行结果:

(5)列表元素的遍历

用for in 去遍历列表元素

案例:

lst = [12, 23, 44, 32, 55, 65]
for item in lst:
    print(item)

运行结果:

 

四、列表元素的增、删、改操作

(1)列表元素的添加

  • append(),在列表末尾添加一个元素
  • extend(),在列表的末尾至少添加一个元素
  • Insert(),在列表的任意位置添加一个元素
  • 切片,在列表的任意位置至少添加一个元素

案例:

print('-------append()---------')  # 表明增加元素前和增加元素后标识不发生改变
lst = [10, 20, 30, 40]
print('增加元素前:', lst,  id(lst))
lst.append(13)
print('增加元素后:', lst, id(lst))

print('-------extend()---------')  # 增加元素时,相当于是再引用进去一个列表
lst1 = [100, 210, 320]
print('增加元素前:', lst, id(lst))
lst.extend(lst1)
print('增加元素后:', lst, id(lst))

print('--------insert()--------')  # 增加元素时在任意位置
lst.insert(1, 90)  # 增加元素时,在索引为1的位置开始增加元素
print('增加元素后:', lst)

print('---------切片-----------')  # 切片相当于是切掉
lst2 = [15, 19, 21, 35]
lst[2:] = lst2  # 表明索引为后边的元素被切掉了,增加了一个新的列表
print(lst)

运行结果:

(2)列表元素的删除

  • remove(),一次删除一个元素,重复元素只删除第一个,元素不存在时,运行结果则会出现ValueError。
  • pop(),删除指定一个索引位置上的元素,指定索引不存在,运行结果则会出现IndexError。不指定索引,删除列表中最后一个元素。
  • 切片,一次至少删除一个元素。
  • clear(),清空列表。
  • del,删除列表

案例:

print('-------remove()---------')
lst = [5, 10, 15, 20, 25, 30, 35, 40, 45, 50]
lst.remove(10)  # 表明删除10这个元素
print(lst)

print('---------pop()----------')
lst.pop(1)
print(lst)  # 表明删除索引位置为1的元素、

print('----------切片-----------')
new_lst = lst[1:4]  # 切片操作至少删除一个元素,产生一个新的列表
print('原列表:', lst)
print('切片以后的列表', new_lst)

lst[0:2] = []  # 不产生新的列表对象,而是删除原列表中的对象
print(lst)

print('---------clear()---------')  # 清空列表中的所有元素
lst.clear()
print(lst)

print('------------del()---------')
del lst  # 删除列表
# print(lst)  # 此时的列表不存在,所以会出现报错的情况

运行结果:

(3)列表元素的修改

  • 为指定索引的元素赋予一个新值
  • 为指定的切片赋予一个新值

案例:

lst = [10, 20, 30, 40, 50]
print('原列表:', lst)
# 只进行单个元素的修改
lst[2] = 300
print('修改一个元素:', lst)
# 修改多个元素,修改多个元素时,可利用索引和步长
lst[1:3] = [12, 13, 14, 15]
print('修改多个元素:', lst)

运行结果:

 

五、列表元素的排序

对列表进行排序,常见的有两种操作 :

1.sort()函数,sort()函数是升序操作 lst.sort(reverse=True)是降序操作 lst.sort(reverse=False)是升序操作

2.设置内置函数进行操作,sorted(),可以对列表进行操作,此时的是升序,会产生一个新的列表对象 ,也可以利用关键字进行排序

这两种方法的区别是:

第一种是在原列表的基础上进行改变,不会产生新的列表对象,而第二种是会产生新的列表对象

案例:

lst = [13, 15, 18, 89, 43, 10]
print('原列表:', lst)
print('--------sort()函数----------')
lst.sort()    # 对列表进行升序
print(lst)
print('------sort(reverse=True)----')
lst.sort(reverse=True)  # 对其进行降序排序
print(lst)
lst.sort(reverse=False)
print(lst)  # 对其进行升序排序
print('设置内置函数sorted(),对列表进行排序,产生一个新的列表对象')
print('原列表:', lst, id(lst))
new_lst = sorted(lst)  # 对列表进行升序排序
print('升序后的列表:', new_lst, id(new_lst))
# 指定关键字,也可以改变升序和降序
desc_lst = sorted(lst, reverse=True)   # 降序
print(desc_lst)
incr_lst = sorted(lst, reverse=False)  # 升序
print(incr_lst)

运行结果:

 

六、列表生成式

列表生成式即生成列表的公式

语法格式:

   [  i*i  for  in  range(1,10) ]

   [列表元素的表达式  for  自定义变量  in range(x,y)  ]

注意事项:

“表示列表元素的表达式”中通常包含自定义变量

案例:

lst = [i for i in range(1, 10)]
print(lst)
lst1 = [i*i for i in range(1, 10)]
print(lst1)
lst2 = [i*2 for i in range(1, 11)]
print(lst2)

运行结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值