基础七:列表

列表

列表是Python中最基本也是最常用的数据结构之一。列表中的每个元素都被分配一个数字作为索引,用来表示该元素在列表内所排的位置。第一个元素的索引是0,第二个索引是1,以此类推。

Python的列表是一个有序可重复的元素集合,可嵌套、迭代、修改、分片、追加、删除,成员判断。

从数据结构角度看,Python的列表是一个可变长度的顺序存储结构,每一个位置存放的都是对象的指针。

创建列表的两种方式

1.[]
2.list()
ctrl + 鼠标点击
iterable 可以用for 循环 都是可迭代的
() 元组
{} 字典
{} 集合
pep8 代码规范

l = list('str') #['s', 't', 'r']
l = list((1, 2, 3)) #[1, 2, 3]
print(l)

l = [1, 'juran', 1.2]
print(l) #[1, 'juran', 1.2]

访问列表内的值

列表从0开始为它的每一个元素顺序创建下标索引,直到总长度减一。要访问它的某个元素,以方括号加下标值的方式即可。注意要确保索引不越界,一旦访问的索引超过范围,会抛出异常。所以,一定要记得最后一个元素的索引是len(list)-1。

# 1.访问列表的值
lis = ['a', 'b', 'c']
value = lis[1]
print(value) #b

value1 = lis[1]
print(value1)  #b

# 2.修改元素的值
lis[1] = '利弊'
# 不能赋值列表中不存在的索引,否则会报错
# lis[3] = 'juran' #IndexError: list assignment index out of range
print(lis)

# 3.列表删除
# 使用del语句或者remove(),pop()方法删除指定的元素。
del lis[0]
print(lis) #['利弊', 'c']
 
# 根据元素的值进行删除
print(lis.remove('a'))  #None ,因为remove()方法没有返回值
# 不能删除列表中没有的值,否则会报错
#lis.remove('d') #ValueError: list.remove(x): x not in list


# 根据索引来进行删除的  默认弹出最后一个 传值的话 按照索引来进行弹出
#[] 可选参数
lis = ['a', 'b', 'c','b']
value = lis.pop(2)
print(value) # c
print(lis) #['a', 'b', 'b']

列表的特殊操作

1)列表组合
2)列表的乘法
3)判断元素是否在列表内部
4)迭代列表中的每个元素

lis1 = [1, 2, 3]
lis2 = [4, 5, 6]
# 1.列表的拼接(组合)  不是对应位置相加!!!!
lis3 = lis1 + lis2
print(lis3) #[1, 2, 3, 4, 5, 6]
# 魔术方法--面向对象中的叫法
print(lis1.__add__(lis2)) #[1, 2, 3, 4, 5, 6]

#2.列表的乘法
lis3 = lis1 * 3     
print(lis1.__imul__(2)) # [1, 2, 3, 1, 2, 3]
print(lis3) #[1, 2, 3, 1, 2, 3, 1, 2, 3]
# 列表不能相乘
print(lis1 * lis2) #TypeError: can't multiply sequence by non-int of type 'list'
#3.判断元素是否在列表内部
print(2 in lis1) # True

#4.迭代列表中的每个元素
lis3=[1,4,2,5,3,6]
#遍历lis3
for i in lis3:
    print(i)
'''
1
4
2
5
3
6
'''

列表的常用函数

len(list)返回列表元素个数,也就是获取列表长度max(list)返回列表元素最大值
min(list)返回列表元素最小值
list(seq)将序列转换为列表

lis = [1, 3, 2, 4]

print(len(lis))#4
# 魔法方法
print(lis.__len__()) #4

#最大最小值
print(max(lis))#4
print(min(lis)) #1

# 类型转换  str->list
print(list('str'))#['s', 't', 'r']

# type 查看变量的类型
s = 1
print(type(str(s)))#<class 'str'>

# 列表排序
# 反转  *IN PLACE*  修改本身
lis.reverse()  #reverse()方法没有返回值,不能直接 print(lis.reverse())--None
print(lis) #[4, 2, 3, 1]
print(lis.reverse()) #None

# 默认升序 reverse=True 降序
lis.sort(reverse=True)
print(lis)#[4, 3, 2, 1]
lis.sort()
print(lis)#[1, 2, 3, 4]

lis1 = [1, 'str', 2]
# 排序:包含不同类型的列表不能进行排序
lis1.sort()  
print(lis1) #TypeError: '<' not supported between instances of 'str' and 'int'

切片

切片指的是对序列进行截取,选取序列中的某一段。
切片的语法是:

list[start:end:step]

以冒号分割索引,start代表起点索引,end代表结束点索引,step代表步长。省略start表 示以0开始,省略end表示到列表的结尾。注意,区间是左闭右开的!

start:起始索引,从0开始,-1表示结束

 end:结束索引

 step:步长,end-start,步长为正时,从左向右取值。步长为负时,反向取值

注意切片的结果不包含结束索引,即不包含最后的一位,-1代表列表的最后一个位置索引
a=[1,2,3,4,5,6]

b1=a[:] #省略全部,代表截取全部内容,可以用来将一个列表拷给另一个列表

print(b1)
结果:[1, 2, 3, 4, 5, 6]

b=a[0:-1:1] #从位置0开始到结束,每次增加1,截取。不包含结束索引位置
print(b)
结果:[1, 2, 3, 4, 5]

c1=a[:3] #省略起始位置的索引,以及步长。默认起始位置从头开始,默认步长为1,结束位置索引为3
print(c1)
结果:[1, 2, 3]

c=a[0:5:3] #从第一个位置到第6个位置,每3个取一个值
print(c)
结果:[1, 4]

 #反向取值
d=a[5:0:-1]
print(d)
结果:[6, 5, 4, 3, 2]

d1=a[::-1]
print(d1)
结果:[6, 5, 4, 3, 2, 1]
lis = ['a', 'b', 'c', 'd', 'e', 'f']

# 取值 bc  区间是左闭右开的!
print(lis[1]) #b
print(lis[2]) #c
print(lis[1:3]) #['b', 'c']
print(lis[1:]) #['b', 'c', 'd', 'e', 'f']
print(lis[:3]) #['a', 'b', 'c']

print(lis[:])   # 复制列表 ['a', 'b', 'c', 'd', 'e', 'f']
print(lis[::2]) #['a', 'c', 'e']

# 写的是负数
print(lis[-1]) #f

列表的内置方法

在这里插入图片描述


li = ['a', 'b', 'c', 'd', 'a']
lis = li[:]
li.append('e') #['a', 'b', 'c', 'd', 'a', 'e']
li.append(['e', 'f']) #['a', 'b', 'c', 'd', 'a', 'e', ['e', 'f']]
print(li)

print(li.count('a')) #2

#lis = ['a', 'b', 'c', 'd', 'a']
lis.extend(['e', 'f']) #['a', 'b', 'c', 'd', 'a', 'e', 'f']
print(lis)
# 字典  {key:value}  {name:juran}
li.extend({'name':'juran','age':18}) #['a', 'b', 'c', 'd', 'a', 'e', ['e', 'f'], 'name', 'age']
print(li)

# L.insert(index, object)
# 根据索引的位置来添加元素
li.insert(2,'juran') 
print(li) #['a', 'b', 'juran', 'c', 'd', 'a', 'e', ['e', 'f'], 'name', 'age']

# 复制
li = ['a', 'b', 'c', 'd', 'a']
lis = li.copy() #['a', 'b', 'c', 'd', 'a']

lis[1] = 'juran'
print(li) #['a', 'b', 'c', 'd', 'a']
print(lis)#['a', 'juran', 'c', 'd', 'a']

lis1 = li[:]
print(lis)#['a', 'juran', 'c', 'd', 'a']
print(lis1)#['a', 'b', 'c', 'd', 'a']

del li[:]
li.clear()
print(li) #[]

# 效果是一样的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值