Python学习之第六天 列表

今天为大家介绍的是Python中内置数据结构之一,列表,以下为学习参考代码。

# 机构:家里蹲
# 作者:青灬火
# 时间:2021/7/17 23:08

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

 #列表的两种创建方式
 #第一种,使用中括号
lst = ['hello', 'world', 100]
print(id(lst)) #1591301919240
print(type(lst)) #<class 'list'>
print(lst) #['hello', 'world', 100]

#调用内置函数list()
lst01 = list(['hello', 'world', 100])

#列表的特点
#1、列表元素按顺序有序排序
print(lst01) #['hello', 'world', 100]
#2、索引映射唯一一个数据,从前向后从0开始,从后向前从-1开始
print(lst01[0]) #hello
print(lst01[-1]) #100
#3、列表可以存储重复数据
lst = list(['hello', 'world', 100, 'hello'])
print(lst[0], lst[-1]) #hello hello
#4、任意数据类型混存
print(type(lst[0])) #<class 'str'>
print(type(lst[2])) #<class 'int'>
#5、根据需要动态分配和回收内存

#获取列表中指定元素的索引
lst = ['hello', 'world', 98, 'hello']
print(lst.index('hello')) #0 如果列表中存在N个相同元素,只返回相同元素中的第一个元素的索引
#print(lst.index('python')) #报错 ValueError: 'python' is not in list
#还可在指定的start和stop之间查找
#print(lst.index('hello', 1, 3)) #ValueError: 'hello' is not in list
print(lst.index('hello', 1, 4)) # 3

#获取列表中的单个元素
print(lst[0]) # hello
print(lst[1]) # world
print(lst[-2]) # 98
#print(lst[4]) #IndexError: list index out of range

#获取列表中的多个元素
#语法格式 列表名[start:stop:step]
#切片的结果为原列表片段的拷贝
#切片的范围 [start, stop), 左闭右开区间
#step默认为1, 简写为[start:stop]
lst = [10, 20, 30, 40, 50, 60, 70, 80]
lst02 = lst[1:6:1]
print(lst02) #[20, 30, 40, 50, 60]
print('原列表', id(lst)) #原列表 2543271011272
print('新切列表', id(lst02)) #新切列表 2543269401096
print(lst[1:6]) #[20, 30, 40, 50, 60] 默认步长为1
print(lst[1:6:]) #[20, 30, 40, 50, 60] 默认步长为1
print(lst[1:6:2]) #[20, 40, 60] 默认步长为2
print(lst[:6:2]) #[10, 30, 50] 默认start为0
print(lst[1::2]) #[20, 40, 60, 80] stop默认为最后一个元素

#step为负数,从start开始往前计算切片
#切片的第一个元素默认是列表的最后一个元素
#切片的最后一个元素默认是列表的第一个元素
print(lst[::-1]) #[80, 70, 60, 50, 40, 30, 20, 10] 逆序反转
print(lst[7::-1]) #[80, 70, 60, 50, 40, 30, 20, 10]
print(lst[6:0:-2]) #[70, 50, 30]

#判断指定元素在列表中是否存在
print('p' in 'python') #True
print('k' not in 'python') #True

lst = ['python', 'hello', 10, 20]
print(10 in lst) #True
print(100 in lst) #False
print(10 not in lst) #False
print(100 not in lst) #True

#列表元素的遍历
for item in lst:
    print(item)

#列表的增删改查
#向列表的末尾添加一个元素
lst = [10, 20, 30]
print('添加元素之前:', lst, id(lst)) #添加元素之前: [10, 20, 30] 2381635708680
lst.append(100)
print('添加元素之后:', lst, id(lst)) #添加元素之后: [10, 20, 30, 100] 2381635708680

lst02 = ['hello', 'world']
#lst.append(lst02) #将lst02作为一个元素添加到lst末尾
#print(lst) #[10, 20, 30, 100, ['hello', 'world']]

lst.extend(lst02) #将lst02的元素依次添加到lst的末尾
print(lst) #[10, 20, 30, 100, 'hello', 'world']

#在任意位置上添加一个元素
lst.insert(1, 90) #索引为1的位置上添加90
print(lst) #[10, 90, 20, 30, 100, 'hello', 'world']

lst3 = [True, False, 'hello']
#在任意位置上添加N多个元素
lst[1:] = lst3 #把索引从1开始的部分替换为lst3的元素
print(lst) #[10, True, False, 'hello']

#列表的删除操作
#remove()
#一次删除一个元素
#重复元素只删除一个
#元素不存在抛出ValueError
lst = [10, 20, 30, 40, 50, 60, 30]
lst.remove(30)
print(lst) #[10, 20, 40, 50, 60, 30]
#lst.remove(100) #ValueError: list.remove(x): x not in list

#pop()
#删除一个指定索引位置上的元素
#指定索引不存在抛出IndexError
#不指定索引,删除列表最后一个元素
lst = [10, 20, 30, 40, 50, 60, 30]
lst.pop(1)
print(lst) #[10, 30, 40, 50, 60, 30]
#lst.pop(6) #IndexError: pop index out of range
lst.pop()
print(lst) #[10, 30, 40, 50, 60]

#切片,一次至少删除一个元素, 将产生新的列表对象
lst3 = lst[1:3]
print('原列表:', lst) #原列表: [10, 30, ,40 50, 60]
print('切片后产生的列表', lst3) #切片后产生的列表 [30, 40]

#不产生新的列表对象,而是删除原列表中的元素
lst[1:3] = []
print(lst) #[10, 50, 60]

#clear() 清空列表
lst.clear()
print(lst) #[]

#del 删除列表
del lst
#print(lst) #NameError: name 'lst' is not defined

#列表元素的修改
#为指定索引的元素赋予一个新值
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]

#列表的排序操作,常见的两种方式
#sort(),列表中有的所有元素默认按照从小到大的顺序进行排序,可以指定 reverse=True, 进行降序排序
lst = [20, 40, 10, 98, 66]
print('排序前的列表', lst, id(lst)) #排序前的列表 [20, 40, 10, 98, 66] 2124928340488
lst.sort()
print('排序后的列表', lst, id(lst)) #排序后的列表 [10, 20, 40, 66, 98] 2124928340488

lst.sort(reverse=True) #降序
print(lst) #[98, 66, 40, 20, 10]
lst.sort(reverse=False) #升序,不指定reverse的话,默认为升序
print(lst) #[10, 20, 40, 66, 98]

#调用内置函数sorted(),可以指定 reverse=True,进行降序排序,原列表不发生改变
lst = [20, 40, 10, 98, 66]
print('排序前的列表', lst, id(lst)) #排序前的列表 [20, 40, 10, 98, 66] 2226002390600
new_lst = sorted(lst)
print('排序后的列表', lst, id(lst)) #排序后的列表 [20, 40, 10, 98, 66] 2226002390600
print(new_lst, id(new_lst)) #[10, 20, 40, 66, 98] 1242513560072

new_lst = sorted(lst, reverse=True)
print(new_lst, id(new_lst)) #[98, 66, 40, 20, 10] 1242514849544

#列表生成式
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]

#列表中的元素值为2,4,6,8,10
lst2 = [i*2 for i in range(1, 6)]
print(lst2) #[2, 4, 6, 8, 10]

扫码关注公众号“JAVA记录册”

该公众号致力于为大家分享工作中会用到一些简单实用的小知识,而不是那些悬在云端的高大上但又感觉空泛的文章,欢迎大家关注,谢谢!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值