06-列表的操作

g列表的操作


列表相加操作

格式:变量 = 列表1 + 列表2
结果:集合两个列表所有元素的新列表
注意:+两侧都要是列表类型

# L = [1,2,3]
# L1 = [4,5,6]
# print(L+L1)

列表相乘操作

格式:变量 = 列表 * 整数
结果:原列表内所用元素复制N遍的新列表

# L = [1,2,3]
# print(L*2)

索引操作

变量[索引]

分片操作

  • 格式:变量 = 列表[:]
    获取整个列表
  • 格式:变量 = 列表[:结束索引]
    获取列表开头到结束索引之前的数据组成的列表
  • 格式:变量 = 列表[开始索引:]
    获取列表开始索引到列表末尾的数据组成的列表
  • 格式:变量 = 列表[开始索引:结束索引]
    • 获取开始索引和结束索引之间的数据组成的列表(包含开始索引,不包含结束索引)
  • 格式:变量 = 列表[开始索引:结束索引:间隔值]
    • 获取开始索引和结束索引之间的数据(按照间隔值来获取)组成的列表(包含开始索引,不包含结束索引)
# L = [1,2,3,4,5,6,7,8,9]
# L1 = L[6:3:-1]
# print(L1)

成员检测

  • 检测一个数据是否在列表中
    格式:值 in 列表
    结果:布尔值

  • 检测一个数据是否不在列表中
    格式:值 not in 列表
    结果:布尔值

列表的遍历操作


for...in

  • 格式:
    for 变量 in 列表:
    使用变量
# L = [1,2,3,4,5]
# for val in L:
#     print(val)

while

  • 格式
    i = 0
    while i<len(列表):
    使用列表中的元素(列表[i])
    i += 1
# L = [1,2,3,4,5,6,7]
# i = 0
# while i<len(L):
#     print(L[i])
#     i += 1

遍历同等长度的二级列表

列表 = [[值1,值2],[值1,值2],....]
for 变量1,变量2 in 列表:
    使用变量1和变量2

注意:变量1取二级列表中的第一个值,变量2取第二个值

# L = [[1,2],[3,4],[5,6]]
# for val,var in L:
#     print(val,var)

遍历非同等长度的二级列表

列表 = [[值1,值2],[值1,值2,值3],[值]...]
for 变量1 in 列表:
    for 变量2 in 变量1:
        使用变量2(变量2是二级列表中的每个值)
# L = [[1,2],[3,4],[5,6,7]]
# for val in L:
#     print(val,type(val))
#     for var in val:
#         print(var,type(var))

列表的十一种操作方法

copy() 复制列表

  • 涉及深浅拷贝,此为浅拷贝

clear()

  • 清空列表

append()
功能:向列表的末尾添加新的元素
格式:列表.append(值)
返回值:None
注意:新添加的值在列表的末尾,该函数直接操作原有列表

# L.append(8)
# L.append(7)
# print(L)

insert()
功能:在指定位置之前插入元素
格式:列表.insert(索引,值)
返回值:None
注意:直接改变原有列表

# L.insert(0,1)
# print(L)

extend()
功能:前一个列表继承另一个序列,即直接将另一个序列中的元素添加到这个列表中,如果这个序列是字符串,字符串中每个字符作为一个元素添加到列表中
格式:列表.extend(序列)
返回值:None
注意:直接改变原有列表

# L.append(L1)
# print(L)
# L.extend(L1)
# print(L)

pop()
功能:在列表中移除一个元素
格式:列表.pop(索引)
返回值:无
注意:没有指定索引,默认移除最后一个元素

# L.pop()
# L.pop(0) #可以传递索引值  来删除指定的元素
# print(L)

remove()
功能:移除指定的值,但只能移除列表中该值第一次出现的元素
格式:列表.remove(值)
返回值:无
注意:如果有索引的情况下推荐使用POP移除,效率比remove高

# L.remove([7,8,9])
# L.remove(8) #如果有多个相同的元素  默认删除第一个
# print(L)

index()
功能:获取某个元素在列表中的索引,只能获取第一个出现的该元素的索引,拥有3个参数
格式:index(元素,开始索引,结束索引)
返回值:整数
注意:值不存在与列表或指定区间内时抛出异常错误!

# print(L.index(8))
# print(L.index(7,5))
# L = [2,1,5,4,2,4,6,4,2,1,5]
# print(L.pop(L.index(5,L.index(5)+1)))
# print(L)

count()
功能:计算某个元素出现的次数
格式:列表.count(值)
返回值:整数

# L = [2,1,5,4,2,4,6,4,2,1,5]
# print(L.count(2))
# print(L.count(5))
# print(L.count(6))

sort()
功能:列表排序

  • 格式:列表.sort() 按照从小到大排序(数字)
  • 格式:列表.sort(reverse=True) 按照从大到小排序(数字)
  • 格式:列表.sort(key=函数) 对值进行指定的函数处理之后在从小到大排序
  • 格式:列表.sort(key=函数,reverse=True) 对值进行指定的函数处理之后在从大到小排序
    返回值:None
    注意:直接改变原有列表
# L = [2,1,4,3,7,6]
# L.sort()
# print(L)
# L = [2,1,4,3,7,6]
# L1 = L.sort()
# L1 = sorted(L)
# print(L)
# print(L1)

L = [
    {"name":"jack","age":18},
    {"name":"rose","age":22},
    {"name":"tom","age":102},
    {"name":"jerry","age":19}
    ]
L.sort(key=lambda x:x["name"])
print(L)

reverse()
功能:列表反转操作
格式:列表.reverse()
返回值:None

# L = [2,1,4,3,7,6]
# L.reverse()
# print(L)

列表推导式

列表的推导公式默认是层层嵌套的关系
格式:

例1:已知L = [1,2,3,4,5,6,7,8,9],求变量L内所有元素的平方组成的列表

for循环写法:

# L1 = []
# for val in L:
#     L1.append(val**2)
# print(L1)

列表推导式

# L1 = [var**2 for var in L]
# print(L1)

例2:求L中所有偶数的平方

for循环写法

# L1 = []
# for val in L:
#     if val % 2 == 0:
#         L1.append(val**2)
# print(L1)

列表推导式

# L1 = [val**2 for val in L if val%2==0]
# print(L1)

例3:L = ["jack","ada","tom","WE","file","continue","break"]求列表中所有元素的长度组成的列表

# L1 = [len(i) for i in L]
# print(L1)

例4:已知str="abc" str2="ABC" 求两个字符串中的元素的所有组合

# L1 = [x+y for x in str1 for y in str2 ]
# print(L1)

例5:求x,y组成的元组 x是1~5之间的偶数 y是1~6之间的奇数

# L1 = [x for x in range(1,5) if x % 2==0]
# print(tuple(L1))
# L2 = [y for y in range(1,6) if y % 2==1]
# print(tuple(L2))
#
# list1 = [(x,y) for x in range(2,6,2) for y in range(1,7,2)]
# print(list1)

# L = [(x,y) for x in range(1,5) if x%2==0 for y in range(1,7) if y%2==1]
# print(L)

例6:已知 L = [[1,2,3],[4,5,6],[7,8,9]][3,6,9]组成的列表

# L1 = [i[2] for i in L]
# print(L1)

例7:求上面列表中[1,5,9]组成的列表

# L1 = [L[i][i] for i in range(len(L))]
# print(L1)

# i = 0,1,2
# 当i = 0  L[i] = [1,2,3]  L[i][i] = 1
# 当i = 1  L[i] = [4,5,6]  L[i][i] = 5
# 当i = 2  L[i] = [7,8,9]  L[i][i] = 9

深浅拷贝

需要用到copy模块,import copy

赋值操作 赋值后的列表跟随元列表进行改变

  • 赋值操作直接把新变量的内存地址指向赋值的变量的内存地址,所以原变量变化时,新变量随之变化
# L = [2,1,4,3,[5,6]]
# L = [1,2,[3,4,[5,6]]]
# L1 = L
# L.append(5)
# L[2][2].append(7)
# print(L)
# print(L1)

浅拷贝 只拷贝外层列表 内层列表跟随原列表进行改变

  • 浅拷贝只能拷贝外层内容,内层内容相当于做了映射;所以原变量外层变化时,新变量不变化,原变量内层变化时,新变量跟着变化
# L1 = copy.copy(L)
# L.append(5)
# L[2][2].append(7)
# print(L)
# print(L1)

深拷贝 深拷贝拷贝整个列表 不跟随原列表进行改变

# L1 = copy.deepcopy(L)
# L.append(5)
# L[2][2].append(7)
# print(L)
# print(L1)

元组的操作

元组的遍历

for ... in

变量 = (值1,值2,值3...)
for 变量 in 元组:
    使用变量获取元组的每个值
# t = (1,2,3,4)
# for val in t:
#     print(val)

while

i = 0
while i<len(元组):
    使用元组变量[i]访问每个值
    i += 1
# t = (1,2,3,4)
# i = 0
# while i < len(t):
#     print(t[i])
#     i += 1

遍历长度相同的多级元组

元组 = ((值1,值2...),(值1,值2...)...)
for 变量1,变量2.. in 元组:
    使用变量1和变量2
# t = ((1,2),(3,4),(5,6))
# for val,var in t:
#     print(val,var)

遍历长度不同的多级元组

元组 = ((值1,值2...),(值1,值2...)...)
for 变量1 in 元组:
    for 变量2 in 变量1:
        使用变量2获取每个值
# t = ((1,2),(3,4,5),(6,7))
# for val in t:
#     for var in val:
#         print(val,var)

元组的操作方法

index()

获取指定值在元组中的索引值
格式:元组.index(值)
返回值:整数
print(t.index(2))

count()

计算某个值在元组中出现的次数
格式:元组.count(值)
返回值:整数
print(t.count(2))

元组推导式

  • 元组的推导式形式和列表的基本一致,唯一不一样的是生成的不是一个新的元组,而是一个生成器,生成器用for循环遍历出数值

基本格式:

格式: 变量 = (i for i in 元组)
结果:不是元组而是一个生成器

带条件格式:

格式: 变量 = (i for i in 元组 if 条件表达式)
结果:不是元组而是一个生成器

多循环推导式:

格式: 变量 = (x+y for x in 元组1 for y in 元组2)
结果:不是元组而是一个生成器   x+y可以是其他操作

带条件的多循环推导式:

格式: 变量 = (x+y for x in 元组1 for y in 元组2 if 条件表达式)
结果:不是元组而是一个生成器   x+y可以是其他操作
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,293评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,604评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,958评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,729评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,719评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,630评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,000评论 3 397
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,665评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,909评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,646评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,726评论 1 330
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,400评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,986评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,959评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,197评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,996评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,481评论 2 342

推荐阅读更多精彩内容