python列表

数据结构

数据结构是用来存储和组织数据的方式,表示集合中的一种或多种特定关系。

在Python中常用的数据结构称为容器。序列(列表,元组)、映射(字典)、集合是三类主要的容器。

数组

数组是一种数据结构,用来存储和处理大量数据。在数组中通过下标进行访问操作。

在Python中,没有数组这个概念。用系列数据类型来代替数组。

系列数据类型

系列数据类型是Python中最简单的数据结构,是一组有顺序的元素的集合,系列数据类型可以包含一个或多个元组,也可以包含空集合(没有元素)。

系列数据类型包括:列表、元组、字符串、字节数据。

序列

把大量数据按次序排列起来而形成的集合称为序列。

所有序列类型都可以进行某些特定的操作,这些操作包括:索引、分片、加成以及检查某个元素是否属于序列的成员,序列长度,最大元素,最小元素等。

序列的分类一

  • 有序序列
    • 列表
    • 元组
    • 字符串
  • 无序序列
    • 字典
    • 集合

序列的分类二

  • 可变序列
    • 列表
    • 字典
    • 集合
  • 不可变序列
    • 元组
    • 字符串

列表

列表是一组有序项目的数据结构,其中对象可以是任意类型,并不要求类型一致。

类表是可变的数据类型,因此它可以进行添加、修改、删除等操作。

列表的创建

字面量创建
  • []
  • 元素之间用逗号分隔
>>> [1,2,3,4]
[1, 2, 3, 4]
>>> [1,'aaa',False,11,1]
[1, 'aaa', False, 11, 1]
>>> []
[]

>>> x=1
>>> [1,2,3,x]   # python中元素可以是变量
[1, 2, 3, 1] 
>>> [1,2,3,3==4] #python中元素可以是表达式
[1, 2, 3, False]
对象创建
推导式创建
  • 专门用来生成满足特定需求的列表
语法格式:
表达式 for 变量 in 序列
>>> list1 = [x*x for x in range(1,10)]
>>> list1
[1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> list2 = [ i for i in list1]
>>> list2
[1, 4, 9, 16, 25, 36, 49, 64, 81]
>>> list3 = [ i for i list1 if i%2==0]
SyntaxError: invalid syntax
>>> list3 = [ i for i in list1 if i%2==0]
>>> list3
[4, 16, 36, 64]

列表的操作

列表的常见操作

  • 索引访问
  • 切片操作
  • 连接操作
  • 重复操作
  • 成员关系操作
  • 比较运算操作
  • 求长度、最大值、最小值、求和等等
索引访问
  • 索引的下标可以是正整数,也可以是负整数
>>> list1 = [1,2,3,4]
>>> list1[0]
1
>>> list1[-1]
4

# 错误
>>> list1[9]
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    list1[9]
IndexError: list index out of range
>>> list1['a']
Traceback (most recent call last):
  File "<pyshell#15>", line 1, in <module>
    list1['a']
TypeError: list indices must be integers or slices, not str
    
# 列表的值可以改变
>>> list1[1] = 6
>>> list1
[1, 6, 3, 4]
删除列表中元素
del 列表元素
>>> list1 = [1,2,3,4]
>>> del list1[3]
>>> list1
[1, 2, 3]
求列表的长度最大值、最小值、求和
>>> list1 = [1,2,3,4]
>>> len(list1)
4
>>> max(list1)
4
>>> min(list1)
1
>>> sum(list1)
10

>>> list3 = ['a','b','c','d']
>>> list3
['a', 'b', 'c', 'd']
>>> max(list3)
'd'

max , min 在使用的时候必须是列表中的元素类型统一

>>> list2 = [1,2,4,'a']
>>> list2
[1, 2, 4, 'a']
>>> max(list2)
Traceback (most recent call last):
  File "<pyshell#32>", line 1, in <module>
    max(list2)
TypeError: '>' not supported between instances of 'str' and 'int'
>>> sum(list2)
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    sum(list2)
TypeError: unsupported operand type(s) for +: 'int' and 'str'
切片操作

截取列表的一部分

  • 超过边界,切片操作不报错
s[i:j]  # i默认为0,j不写默认到末尾结束,k默认步长为1
s[i:j:k]
>>> list1 = [1,2,3,4,5,6,7]
>>> list1[1:3]
[2, 3]
>>> list1[:4]
[1, 2, 3, 4]
>>> list1[3:]
[4, 5, 6, 7]
>>> list1[1:6:2]
[2, 4, 6]
>>> 
>>> 
>>> list1[:2] = []    # 等号可以做直接赋值
>>> list1
[3, 4, 5, 6, 7]
连接和重复操作
  • 连接: + ,+=
  • 重复: * , *=
>>> list1 = [1,2]
>>> list2 = [3,4]
>>> list1 + list2
[1, 2, 3, 4]

>>> list3 = [1,2,3]
>>> list4 = [2,3,4]
>>> list3 + list4    # 加号只负责连接,不负责去重
[1, 2, 3, 2, 3, 4]

>>> list4 = [1,2,3]
>>> 3 * list4
[1, 2, 3, 1, 2, 3, 1, 2, 3]


>>> list1 = [1,2,3]
>>> list2 = [3,4,5]
>>> list1 += list2
>>> list1
[1, 2, 3, 3, 4, 5]
>>> list1 *= 3
>>> list1
[1, 2, 3, 3, 4, 5, 1, 2, 3, 3, 4, 5, 1, 2, 3, 3, 4, 5]
成员关系操作
  • in
  • not in
>>> list1 = [1,2,3,4]
>>> 3 in list1
True
>>> 7 not in list1
True
  • count() : 指定元素在列表中出现的次数
>>> list2 = [1,2,3,3,4,5,3,3,5]
>>> list2.count(3)
4
  • index(x,[i,j]) : 指定元素在列表中第一次出现的位置下标
    • 三个参数:x, i, j
    • x: 指定元素
    • i: 开始下标
    • j: 结束下标
>>> list2 = [1,2,3,3,4,5,3,3,5]
>>> list2.index(5,5,8)
5
>>> list2.index(3)
2

>>> list2.index(9)
Traceback (most recent call last):
  File "<pyshell#78>", line 1, in <module>
    list2.index(9)
ValueError: 9 is not in list   # 元素不存在,直接报错
比较运算操作
  • 列表中,比较运算是元素逐个比较
>>> list1 = ['a','b']
>>> list2 = ['a','b']
>>> list3 = ['a','b','c']
>>> list4 = ['c','b','a']
>>> list1 < list2
False
>>> list1 == list2
True
>>> list1 < list3
True
>>> list4 > list3
True
排序操作
  • sorted
>>> list1 = [1,3,6,2]
>>> sorted(list1)
[1, 2, 3, 6]
>>> list1
[1, 3, 6, 2]
any, all
  • 判断列表中的元素是否为true
  • any: 只要有一个为true,就为true
>>> any([1,2,0])
True
>>> all([1,2,0])
False
列表的遍历
list1 = ['html','css','js']
>>> for i in range(0,len(list1)):
	print('序号:%s 值:%s'%(i+1,list1[i]))

	
序号:1:html
序号:2:css
序号:3:js
list1 = ['html','css','js']
>>> for i in list1:
	print('序号:%s 值:%s' %(list1.index(i)+1,i))

	
序号:1:html
序号:2:css
序号:3:js
列表的拆封
# 变量1, 变量2, 变量3 = 列表
# 变量的个数与列表元素的个数保持一致
>>> a,b = [1,2]
>>> a
1
>>> b
2
# 交换变量值
a= 3
b = 4
a,b = b,a
print(a,b)

'''
4 3
'''
>>> data = [1001,'tom',[90,91,100]]
>>> sid,name,score = data
>>> sid
1001
>>> name
'tom'
>>> score
[90, 91, 100]
>>> chinese,math,english = score
>>> chinese
90
>>> math
91
>>> english
100

## 
>>> sid,name,[chinese,math,english] = data
>>> chinese
90
列表的解析(推导式)
表达式是:组表达式

>>> [(i,i*2) for i in range(6)]
[(0, 0), (1, 2), (2, 4), (3, 6), (4, 8), (5, 10)]


>>> x = 1
>>> y = 2
>>> z = 3
>>> [(x,y,x+y+z) for x in range(1,4)]
[(1, 2, 6), (2, 2, 7), (3, 2, 8)]
>>> [(x,y,x+y+z) for x in range(1,4) for y in range(1,4) if x>=y]
[(1, 1, 5), (2, 1, 6), (2, 2, 7), (3, 1, 7), (3, 2, 8), (3, 3, 9)]
# 将列表中的所有元素组合成字符串
a = {'python','js','java'}
print("".join(a))
'''
jsjavapython
'''
# 查找列表频率最高的值
a = [1,2,3,1,2,3,2,2,4,5,1]
print(max(set(a),key=a.count))

from collections import Counter
cnt = Counter(a)
print(cnt)
print(cnt.most_common(3))

'''
2
Counter({2: 4, 1: 3, 3: 2, 4: 1, 5: 1})
[(2, 4), (1, 3), (3, 2)]
'''
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值