Python学习---Python下列表的学习
Posted 小a玖拾柒
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python学习---Python下列表的学习相关的知识,希望对你有一定的参考价值。
列表[list]用中括号[]表示,处理一组有序项目的数据结构,列表的类型是可变的数据类型,类型是list
列表是可变/线程不安全的
# type(a) = list 利用type判断元素离线
# 切片是左闭右开[m,n)的
# 取得方向由第三个参数的正负决定,不变的还是原来列表的下标
# -1代表最后一个元素
# ::代表到最后
#列表时可变的
#可以利用id查看列表在内存中的存储位置
列表的创建+查询
列表的查:切片,index, count
# list = [\'hello\', \'world\', \'2017\'] 会有告警,因为list是关键字 name = [\'hello\', \'world\', \'2017\', \'hhh\', \'ftl\'] # print(id(name)) # 切片是左闭右开的形式,左右只是取的方向而已,不变的还是列表下标 # 打印所有元素 #print("打印所有元素:", name) print("打印所有元素:", name[0:name.__len__()]) print("打印所有元素(默认到最后):", name[0:]) # 打印第一个 print("打印第一个: ", name[0]) # 取出后面2个 print("取出后面2个: ", name[3:5]) # 取出world后面的所有元素,默认取到最后一个 print("取出world后面的所有元素: ", name[1:]) # -1代表最后一个元素 print("-1代表最后一个元素: ", name[-1]) # 去除最后一个元素 print("去除最后一个元素:", name[0:-1]) # 虽然超出了最大范围,但是默认是取到最后一个元素 print("超出了最大范围,但默认取到最后一个元素:", name[1:10]) # 间隔一个取一个元素(默认间隔是1,就是每一个元素都取到) print("间隔一个取一个元素(默认间隔是1,就是每一个元素都取到):", name[0::2]) # 从右向左取值,取出全部元素 print("从右向左取值name[-1::-1],取出全部元素:", name[-1::-1]) # 注意:如果用到了0下标,则会少一个值 print("从右向左取值name[-1:0:-1],取出全部元素:", name[-1:0:-1]) # 从右向左取值(间隔一个取一个) print("从右向左取值,间隔一个取一个:", name[-1::-2]) # 只打印 hhh,world print("只打印 hhh,world:[3::-2]", name[3::-2]) print("只打印 hhh,world:[-2::-2]", name[-2::-2]) # 默认是+1的方向 print("默认是+1的方向:", name[-2::])
count 方法统计某个元素在列表中出现的次数
name = [\'a\', \'b\', \'c\', \'a\'] print(name.count(\'a\')) --> 2
index: 根据元素内容返回元素所在的位置,如果有2个相同的元素,以第一个为准
name = [\'z\', \'a\', \'b\', \'c\', \'a\'] print(\'a的第一个位置是:\', name.index(\'a\')) # -->1 # 强制取出第二个a的位置 print(name[name.index(\'a\')+1::].index(\'a\') + name.index(\'a\')+1)
嵌套的列表练习
boy = [[\'ftl\', 12, \'male\'], [\'hhh\', 13, \'female\'], [\'pig\', 0, \'unknow\']] print("info of HHH: ", boy[1]) print("age of HHH: ", boy[1][1])
for循环的特殊打印
te = [[\'Shell\', 150], [\'Python\', 600], [\'Mysql\', 200], [\'Oracle\', 400]] print("整体打印1:", te) print("整体打印2(用循环):") for i in te: print(i) print(\'te的大小:\', len(te)) print("[k,v]的使用:") for i, v in te: print(i, v)
利用list类来创建列表: 可以看出跟使用小括号,中括号还是大括号关系不大,构造出来的都是列表
name = list([1, 2, 3, 4, 5, 6]) print(name) name2 = list((7, 8, 9, 10, 11, 12)) print(name2) name3 = list({13, 14, 15, 16, 17, 18}) print(name3)
利用列表生成器来生成列表,也可以放置函数进行操作
# 列表生成器
a = [ x*2 for x in range(10)] # 找出X并且对X进行操作 print(a) # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
# 在函数内操作
def plus(x): return x ** 3 # b = [plus(x) for x in [1, 3, 5]] 是个序列就好 b = [plus(x) for x in range(10)] print(b) # [0, 1, 8, 27, 64, 125, 216, 343, 512, 729]
列表的特殊赋值:注意元素的个数和列表里面的数量相同
c = [\'hello\', \'world\'] x,y = c print(x, y) # hello world
列表的增加:append,insert,extend
append默认是插入到列表尾部,修改的是索引值
# list = [\'hello\', \'world\', \'2017\'] 会有告警,因为list是关键字 name = [\'hello\', \'world\', \'2017\', \'hhh\', \'ftl\'] print(\'--------------------------------------------------------------------------------\') print("Append修改前:", name[0:]) # append默认是插入到列表尾部 name.append(\'python\') print("Append修改后:", name[0:]) print(\'--------------------------------------------------------------------------------\') print("Insert修改前:", name[0:]) # 修改的是索引值 name.insert(0, "Java") print("Insert修改后:", name[0:]) print(\'--------------------------------------------------------------------------------\')
extend 方法可以在列表的末尾一次性追加另一个序列中的多个值。
extend 方法修改了被扩展的列表,而原始的连接操作(+)会返回一个全新的列表, 且不影响原来的列表。
name = [\'a\', \'b\', \'c\'] name2 = [\'e\', \'f\', \'g\'] name2.extend(name) print("name :", name) print("name2.extend(name):", name2) name3 = [\'x\', \'y\', \'z\'] print("name + name3:", name + name3)
列表的修改:
同时修改多个元素,需要用列表来再次赋值
# list = [\'hello\', \'world\', \'2017\'] 会有告警,因为list是关键字 name = [\'hello\', \'world\', \'2017\', \'hhh\', \'ftl\'] # 修改2017为2018 print("修改前:", name[0:]) name[2] = \'2018\' print("修改后:", name[0:]) print(\'--------------------------------------------------------------------------------\') # 修改hello world 为 Java Python print("修改前:", name[0:]) name[0:2]=[\'Java\', \'Python\'] print("修改后:", name[0:])
特殊情况:如果替换和被替换的数量对不上,就会删除那个位置的元素
name = [\'a\', \'b\', \'c\', \'d\', \'e\'] #name[1:4] ==> b c d print(name) name[1:4] = [\'B\', \'C\'] print(name)
列表的删除:remove pop del
remove删除的是元素,不是下标
pop 删除的是下标,而且会返回删除的元素,什么都不写默认删除最后一个值
del 是一个函数,既可以删除某个元素,也可以删除list对象
clear 清空,但是还是保留原来的列表属性
Remove:
# list = [\'hello\', \'world\', \'2017\'] 会有告警,因为list是关键字 name = [\'hello\', \'world\', \'2017\', \'hhh\', \'ftl\'] # 删除2017 print("修改前:", name[0:]) # remove的是元素,不是下标 # name.remove(1) --> ValueError: list.remove(x): x not in list name.remove(\'2017\') # name.remove(name[2]) -->效果相同,相当于用列表取出元素后删除 print("修改后:", name[0:])
Pop: 删除下标,而且可以拿到删除后的内容
# list = [\'hello\', \'world\', \'2017\'] 会有告警,因为list是关键字 name = [\'hello\', \'world\', \'2017\', \'hhh\', \'ftl\'] # 删除2017 print("修改前:", name[0:]) year=name.pop(2) print("修改后:", name[0:]) print("year:", year) #特殊:默认删除最后一个元素 name.pop() print(name)
Del: 是一个函数,既可以删除某个元素,也可以删除list对象
# list = [\'hello\', \'world\', \'2017\'] 会有告警,因为list是关键字 name = [\'hello\', \'world\', \'2017\', \'hhh\', \'ftl\'] # 删除2017 print("修改前:", name[0:]) del name[2] print("修改后:", name[0:]) # 删除name对象 del name print("删除name对象后:", name[0:])
其他
reverse 方法将列表中的元素反向存放
name = [\'a\', \'b\', \'c\'] name.reverse() print(name)
sort 方法用于在原位置对列表进行排序,默认升序
name = [\'z\', \'a\', \'b\', \'c\', \'a\'] name.sort() print(name) name.sort(reverse=True) print(name)
以上是关于Python学习---Python下列表的学习的主要内容,如果未能解决你的问题,请参考以下文章