Python学习笔记(十一)----组合数据类型之序列与列表

Python学习笔记(十一)----组合数据类型之序列与列表

1.序列和索引

序列 是一个用于储存多个值的连续空间,每个值都对应一个整数的编号,成为 索引

索引
正向递增索引方向递减索引

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

上述列表中的字符串为基本数据类型,而序列、元组、集合和字典属于组合数据类型

代码示例:

#正向递增索引
s='ybj❤yyy'
for i in range(0,len(s)):
    print(i,s[i],end='\t')
print('\n-------------')
#逆向递减索引
for i in range(-7,0)
    print(i,s[i],end='\t')

运行结果:

0 y 1 b 2 j 3 ❤ 4 y 5 y 6 y

-7 y -6 b -5 j -4 ❤ -3 y -2 y -1 y

2.序列

2.1序列的切片操作

2.1.1语法结构
序列[start:end:step]
'''
注释:
start:切片的开始索引(包含)(默认从0开始)
end:切片的结束索引(不包含)(默认到最后一个元素且包含)
step:步长(默认为1)
'''

代码示例:

s='hellow'
s1=s[0:5:2]

2.2序列的相加和相乘操作

代码示例:

s='Hello'
s2='World'
print(s+s2)#产生一个新的字符串序列'HelloWorld'

#序列的相乘
print(s*5)
print('-'*40)

2.3常用的操作符

操作符/函数描述说明
x in s如果x是s的元素,结果为True,否则为False
x not in s如果x不是s的元素,结果为True,否则为False
len(s)序列s中元素的个数(即序列长度)
max(s)序列s中的最大值
min(s)序列s中的最小值
s.index(x)序列s中第一次出现元素x的位置
s.count(x)序列s中出现x的总次数

代码示例:

s='Helloworld'
#in的使用
print('e在helloword中存在吗?',('e'in s))
print('e在helloword中存在吗?',('v'in s))
#not in 的使用
print('e在helloword中存在吗?',('e'not in s))
print('e在helloword中存在吗?',('v'not in s))
#内置函数
print('len()',len(s))
print('max()',max(s))
print('min()',min(s))
#序列对象的方法,使用序列的名称,打点调用
print('s.index()',s.index('o'))
#print('s.index()',s.index('v')) #会报错因为v不存在
print('s.count()',s.count('o'))

3.列表

列表是指一系列按特定的顺序排列的元素组成,是Python中内置的 可变序列 ,在Python中使用[]定义列表,元素与元素之间使用 英文的逗号 隔开,另外,列表中的元素可以是 任意数据类型

3.1列表的创建与删除方式

3.1.1列表的创建
  1. 使用[]直接创建
列表名=[element1,element2,...elementN]
  1. 使用内置函数list()创建列表
列表名=list(序列)
3.1.2列表的删除
del 列表名

代码示例:

#直接使用[]创建
lst=['yangbanjin','❤','yyy',99]
print(lst)
#使用函数list()
lst2=list('yangbanjin❤yyy')
lst3=list(range(1,10,2))#从1开始到10结束,不包含10,步长为2
print(lst2)
print(lst3)
#列表是序列的一种,对序列的操作符、运算符、函数均可使用
print(lst+lst2+lst3)
print(lst*3)
print(len(lst))
print(max(lst3))
print(min(lst3))
print(lst2.count('y'))
print(lst2.index('y'))
#删除操作
lst4=[10,20,30]
print(lst4)
del lst4
#print(lst4)#报错,没有定义

运行结果:

[‘yangbanjin’, ‘❤’, ‘yyy’, 99]
[‘y’, ‘a’, ‘n’, ‘g’, ‘b’, ‘a’, ‘n’, ‘j’, ‘i’, ‘n’, ‘❤’, ‘y’, ‘y’, ‘y’]
[1, 3, 5, 7, 9]
[‘yangbanjin’, ‘❤’, ‘yyy’, 99, ‘y’, ‘a’, ‘n’, ‘g’, ‘b’, ‘a’, ‘n’, ‘j’, ‘i’, ‘n’, ‘❤’, ‘y’, ‘y’, ‘y’, 1, 3, 5, 7, 9]
[‘yangbanjin’, ‘❤’, ‘yyy’, 99, ‘yangbanjin’, ‘❤’, ‘yyy’, 99, ‘yangbanjin’, ‘❤’, ‘yyy’, 99]
4
9
1
4
0
[10, 20, 30]


3.2enumerate(枚举)函数的使用

语法结构:

for index,item in enumerate(lst):
	输出index和item
	#index:序号
	#item:元素

代码示例:

#列表的遍历操作
lst=['yangbanjin','❤','yyy',99]
#for循环
for item in lst:
    print(item)

#使用for循环,range(),len()函数,根据索引进行
for i in range(0,len(lst)):
    print(i,'-->',lst[i])
#enumerate()
for index,item in enumerate(lst):
    print(index,item)#index是序号,不是索引
#手动修改序号起始值
for index,item in enumerate(lst,start=1):#start可以省略不写
    print(index,item)

运行结果:

yangbanjin

yyy
99
0 --> yangbanjin
1 --> ❤
2 --> yyy
3 --> 99
0 yangbanjin
1 ❤
2 yyy
3 99
1 yangbanjin
2 ❤
3 yyy
4 99

3.3列表的相关操作方法

列表方法描述说明
lst.append(x)在列表lst最后增加一个元素
lst.insert(index,x)在列表中的第index位置增加一个元素
lst.clear()清除列表lst中的所有元素
lst.pop(index)将列表lst中第index位置的元素取出,并从列表中将其删除
lst.remove(x)将列表lst中出现的第一个元素x删除
lst.reverse(x)将列表lst中的元素反转
lst.copy()拷贝列表lst中的所有元素,生成一个新的列表

代码示例:

lst=['yangbanjin','love','yyy']
print('原列表',lst,id(lst))
#增加元素
lst.append('999')
print('增加之后',lst,id(lst))#增加之后元素个数可变,内存地址不可变
#插入元素
lst.insert(1,521)
print(lst)
#列表元素的删除
lst.remove(521)
print('删除之后',lst,id(lst))
#使用pop(index)根据索引将元素取出,然后再删除
print(lst.pop(1))
#清楚列表中所有元素
# lst.clear()
# print(lst,id(lst))
#列表的逆向输出
lst.reverse()
print(lst)
#列表的拷贝
new_lst=lst.copy()
print(lst,id(lst))
print(new_lst,id(new_lst))
#列表元素的修改操作
lst[1]='yyc'
print(lst)

运行结果:

原列表 [‘yangbanjin’, ‘love’, ‘yyy’] 2358647647168
增加之后 [‘yangbanjin’, ‘love’, ‘yyy’, ‘999’] 2358647647168
[‘yangbanjin’, 521, ‘love’, ‘yyy’, ‘999’]
删除之后 [‘yangbanjin’, ‘love’, ‘yyy’, ‘999’] 2358647647168
love
[‘999’, ‘yyy’, ‘yangbanjin’]
[‘999’, ‘yyy’, ‘yangbanjin’] 2358647647168
[‘999’, ‘yyy’, ‘yangbanjin’] 2358636497856
[‘999’, ‘yyc’, ‘yangbanjin’]


3.4列表排序的两种方法

方法一:列表对象的sort方法

lst.sort(key=None,reverse=False)
'''
key:表示排序的规则
reverse:表示排序方式(默认升序)
'''

代码示例:

#列表的排序
lst=[4,6,98,56,47,23]
print('原列表',lst)

lst.sort()
print('升序',lst)
lst.sort(reverse=True)
print('降序',lst)

lst2=['yangbanjin','xihuan','yyy','YYC','YYY']
print('原列表',lst2)
#升序排列,先排大写,再排小写(按照ASCII码)
lst2.sort()
print('升序',lst2)
lst2.sort(reverse=True)
print('降序',lst2)

#自己制定规则,忽略大小写
lst2.sort(key=str.lower)
print(lst2)

运行结果:

原列表 [4, 6, 98, 56, 47, 23]
升序 [4, 6, 23, 47, 56, 98]
降序 [98, 56, 47, 23, 6, 4]
原列表 [‘yangbanjin’, ‘xihuan’, ‘yyy’, ‘YYC’, ‘YYY’]
升序 [‘YYC’, ‘YYY’, ‘xihuan’, ‘yangbanjin’, ‘yyy’]
降序 [‘yyy’, ‘yangbanjin’, ‘xihuan’, ‘YYY’, ‘YYC’]
[‘xihuan’, ‘yangbanjin’, ‘YYC’, ‘yyy’, ‘YYY’]

方法二:内置函数sorted()

sorted(iterable,key=None,reverse=False)
#iterable:表示的是排序的对象
#列表的排序
lst=[4,6,98,56,47,23]
print('原列表',lst)

#排序
asc_lst=sorted(lst)
print('升序',asc_lst)
print('原列表',lst)#原列表不变
#降序
desc_lst=sorted(lst,reverse=True)
print('降序',desc_lst)
print('原列表',lst)#原列表不变


lst2=['yangbanjin','xihuan','yyy','YYC','YYY']
print('原列表',lst2)

#忽略大小写
new_lst2=sorted(lst2,key=str.lower)
print('原列表',lst2)
print('排序后的顺序',new_lst2)

运行结果:

原列表 [4, 6, 98, 56, 47, 23]
升序 [4, 6, 23, 47, 56, 98]
原列表 [4, 6, 98, 56, 47, 23]
降序 [98, 56, 47, 23, 6, 4]
原列表 [4, 6, 98, 56, 47, 23]
原列表 [‘yangbanjin’, ‘xihuan’, ‘yyy’, ‘YYC’, ‘YYY’]
原列表 [‘yangbanjin’, ‘xihuan’, ‘yyy’, ‘YYC’, ‘YYY’]
排序后的顺序 [‘xihuan’, ‘yangbanjin’, ‘YYC’, ‘yyy’, ‘YYY’]


3.5列表生成式

3.5.1语法结构
lst=[expression for item in range]

lst=[expression for item in range if condition]

代码示例:

import random #产生随机数
lst=[item for item in range(1,11)]
print(lst)

lst=[item*item for item in range(1,11)]
print(lst)

lst=[random.randint(1,100) for _ in range(10)]
print(lst)

#从列表中选择符合条件的元素组成新列表
lst=[i for i in range(10) if i%2==0]
print(lst)

运行结果:

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]
[59, 97, 75, 40, 77, 79, 31, 100, 25, 47]
[0, 2, 4, 6, 8]

3.6二维列表的遍历与生成

二维列表也被称为表格数据,由行和列组成

3.6.1用双重for循环遍历二维列表
for row in 二维列表:
	for item in row:
		pass
#创建二维列表
lst=[
    ['城市','环比','同比'],
    ['北京',102,103],
    ['上海',104,504],
    ['深圳',100,39]
]
print(lst)

#使用双重for循环遍历
for row in lst:
    for item in row:
        print(item,end='\t')
    print()

#列表生成式,生成四行五列的二维列表
lst2=[ [j for j in range(5)]for i in range(4)]
print(lst2)

运行结果:

[[‘城市’, ‘环比’, ‘同比’], [‘北京’, 102, 103], [‘上海’, 104, 504], [‘深圳’, 100, 39]]
城市 环比 同比
北京 102 103
上海 104 504
深圳 100 39
[[0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], [0, 1, 2, 3, 4]]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值