列表基础知识总结

列表(list)

列表的使⽤

列表的创建:通过[]来创建⼀个空列表

切⽚

  • 切⽚是指从现有列表中获得⼀个⼦列表
  • 通过切⽚来获取指定的元素
  • 语法: 列表[起始 : 结束 : 步⻓]
  • 通过切片获取元素时,会包括起始位置的元素,不会包括结束位置的元素
    – 起始位置和结束位置的索引可以不写
    – 如果省略结束位置, 则会从当前的开始位置⼀直截取到最后
    – 如果省略开始位置, 则会从第⼀个元素截取到结束的元素,但是不包括结束的元素
    – 如果开始位置和结束位置都省略, 则则会从第⼀个元素开始
    截取到最后⼀个元素
  • 步⻓表示每次获取元素的间隔,默认是1(可以省略不写)
  • 步⻓不能是0,但可以是是负数
list_ = [1,2,3,4,5,6,7,8]
a = list_[-3:-1]
print(a)#[6, 7]

b = list_[-1:-3]
print(b)#[]

注意:序列都是从左向右排,不管你的下标是正的还是负的都是这个规律
step 也是可以等于负数的,str[::-1] 表示的是从列表的右边看这个列表,然后按照 step = 1 去列表中的元素,也可以是[::-2],[::-3],但是[2:5:-2],得不到结果,为空
list_ = [1,2,3,4,5,6,7,8]
a = list_[2:5:-2]
print(a) #[]

b = list_[::-2]
print(b) #[8, 6, 4, 2]

通⽤操作

+和 *

+可以将两个列表拼接成⼀个列表
*可以将列表重复指定的次数 (注意2个列表不能够做乘法,要和整数做乘法运算)

列表的⽅法

成员检测 in,not in

  • in⽤来检查指定元素是否在列表当中
  • not in ⽤来检查指定元素是否不在列表当中

添加元素append() ,extend()

  • append() 像列表的最后添加⼀个元素
  • extend( iterable ) 使⽤⼀个新的序列来扩展当前序列(它会将该序列的中元素添加到列表中) 参数需要传递⼀个序列
a = [1, 2, 3, 4, 5]
b = ["hahah","hehiehi"]
a.extend(b)
print(a)  
#[1, 2, 3, 4, 5, 'hahah', 'hehiehi']

删除,清除列表del,clear,pop(),remove()

  • del list:删除列表
  • list.clear:清空
  • pop() 根据索引删除并返回指定元素
  • list.remove() 删除指定元素 (如果相同值的元素有多个,只会删除第⼀个)
    如果被删除的值没在list中,则报错
    因此删除list指定值的操作应该使用try-excepty语句,或者先行进行判断
  • 方法一:
team = ["爵士","鹈鹕","公","马刺","雷霆","森林狼"]
value = "公牛"                # 指定要移除的元素
if team.count(value)>0:      # 判断要删除的元素是否存在
     team.remove(value)        # 移除指定的元素
print(team) #运行结果:['爵士', '鹈鹕', '马刺', '雷霆', '森林狼']
#根据索引删除
#del verse[-1]
  • 方法二:
try:
    team.remove(value)
except:
    print("元素不存在")
print(team)

修改列表insert(),extend()

  • insert(arg1,arg2) 像列表指定位置插⼊⼀个元素 参数1:要插⼊的位置 参数2:要插⼊的元素

翻转列表:reverse(),reversed(),sort(),sorted(),

  • reverse() 翻转列表
a = [1, 2, 3, 4, 5]
a.reverse()
print(a)    #[5, 4, 3, 2, 1]

a = [1, 2, 3, 4, 5]
b = a.reverse()
print(b)#None

l注意:
a.reverse() 这一步操作的返回值是一个None,其作用的结果,需要通过打印被作用的列表才可以查看出具体的效果

  • reversed():
    而reversed()是python自带的一个方法,准确说,应该是一个类,在经过reversed()的作用之后,返回的是一个把序列值经过反转之后的迭代器,所以,需要通过遍历,或者List,或者next()等方法,获取作用后的值

1:列表的反转

bb = [1,3,5,7]
print(list(reversed(bb)))
#[7, 5, 3, 1]

2.元组的反转:

aa = (1, 2, 3)
print(tuple(reversed(aa)))

3.字符串的反转

ss = "qwer1234"
print(''.join(reversed(ss)))
  • sort(key=None,reverse=False) True反序;False 正序.默认是正序
a = [1, 2, 3, 4, 5]
a.sort(reverse=True)
print(a)    #[5, 4, 3, 2, 1]

sort()方法对字符串列表进行排序时,
采用的规则是先对大写字母排序,然后再对小写字母排序。
如果想要对字符串列表进行排序(不区分大小写时),
需要指定其key参数

  • sorted(iterable, key=None, reverse=False)
a = [1, 2, 3, 4, 5]
b = sorted(a, reverse=True)
print(b)#[5, 4, 3, 2, 1]

注意:sorted()与sort()区别
使用内置的sorted()函数实现:
sorted(iterable, key=None, reverse=False)
说明:列表对象的sort()方法和内置sorted()函数的作用基本相同
;不同点是在使用sort()方法时,会改变原列表的元素排列顺序,
而使用sorted()函数时,会建立一个原列表的副本,该副本为排序后
的列表

列表计算类:sum(),len(),max(),min(),count()

  • len() 获取列表中元素的个数
  • max() 获取列表中最⼤值
  • min() 获取列表中最⼩值
  • list.index(x[, start[, end]])
  • list.count(x) 统计指定元素在列表中出现的个数
    sum():统计数值列表的元素和

循环:enumerate()

enumerate()函数用法

print("考试排名:")

team = ["小明","小李","小王",'小张',]

for index,item in enumerate(team):

    print(index + 1,item)`

运行结果:
考试排名:
1 小明
2 小李
3 小王
4 小张

注意:

使用sort()方法进行数值列表的排序比较简单,
但是使用sort()方法对字符串列表进行排序时,
采用的规则是先对大写字母排序,然后再对小写字母排序。
如果想要对字符串列表进行排序(不区分大小写时),
需要指定其key参数。例如,定义一个保存英文字符串的列表,
然后应用sort()方法对其进行升序排列,可以使用下面的代码

list = ['cat','Tom','Angela','pet']

list.sort()
# 默认区分字母大小写

print("区分字母大小写:",list)

list.sort(key=str.lower)
# 不区分字母大小写

print("不区分字母大小写:",list)

运行结果:
区分字母大小写: [‘Angela’, ‘Tom’, ‘cat’, ‘pet’]
不区分字母大小写: [‘Angela’, ‘cat’, ‘pet’, ‘Tom’]

二维列表的使用

str1 = "千山鸟飞绝"
str2 = "万径人踪灭"
str3 = "孤舟蓑笠翁"
str4 = "独钓寒江雪"

verse = [list(str1), list(str2), list(str3), list(str4)]
# 定义一个二维列表
print(verse)
print("\n-- 横版 --\n")
for i in range(4):        # 循环古诗的每一行
    for j in range(5):          # 循环每一行的每个字(列)
        if j == 4:               # 如果是一行中的最后一个字
            print(verse[i][j])   # 换行输出
        else:
            print(verse[i][j], end="") 


# 竖版打印
#verse.reverse()
# # 对列表进行逆序排列
# print(verse)
# print("\n-- 竖版 --\n")
# for i in range(5):                                           # 循环每一行的每个字(列)
#     for j in range(4):                                       # 循环新逆序排列后的第一行
#         if j == 3:                                           # 如果是最后一行
#             print(verse[j][i])                               # 换行输出
#         else:
#             print(verse[j][i], end="")

– 横版 –

千山鸟飞绝
万径人踪灭
孤舟蓑笠翁
独钓寒江雪

双层列表循环

#a 为嵌套列表,或者叫双层列表
a = [["one", 1], ["two", 2], ["three", 3] ]

for k,v in a:
    print(k, "--", v)

选择过滤列表

# 还可以过滤原来list中的内容病放入新列表
# 比如原有列表a, 需要把所有a中的偶数生成新的列表b

a = [x for x in range(1,35)] #生成从1到34的一个列表
# 把a中所有偶数生成一个新的列表 b
b = [m for m in a if m % 2 == 0]
print(b)

列表生成式可以嵌套

# 列表生成式可以嵌套
# 由两个列表a,b
a = [i for i in range(1,4)] # 生成list a
print(a)

b = [i for i in range(100,400) if i % 100 == 0]
print(b)

# 列表生成是可以嵌套,此时等于两个for循环嵌套
c = [  m+n for m in a for n in b]
print(c)

# 上面代码跟下面代码等价
for m in a:
    for n in b:
        print(m+n, end="  ")
print()


# 嵌套的列表生成式也可以用条件表达式
c = [  m+n for m in a for n in b if m+n < 250]
print(c)

拷贝copy()用法,注意对比区别

# copy: 拷贝,此函数是浅拷贝,

# 列表类型变量赋值示例
a = [1,2,3,4,5,666]
print("列表a:",a)
b = a   # list类型,简单赋值操作,是传地址
b[3] = 777
print("列表a:",a)
print("a的地址",id(a))
print("b:",b)
print("b的地址:",id(b))

print("*" * 20)

# 为了解决以上问题,list赋值需要采用copy函数
b = a.copy()
print(a)
print(id(a))
print(b)
print(id(b))

print("*" * 30)


b[3] = 888
print(a)
print(b)
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值