列表【sort(key),remove】与元组

列表list【可更改,索引正向从0开始,逆向从-1开始】

将多个元素用逗号隔开,放入方括号中称为列表 l=[]

有关列表的函数

  1. 求长len(list)
  2. 求最大值max(list)
  3. 求最小值min(list)
  4. 将元组转换为列表list(tuple)

有关列表的方法

序号方法
1list.append(obj)
在列表末尾添加新的对象
2list.count(obj)
统计某个元素在列表中出现的次数
3list.extend(seq)
在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
4list.index(obj)
从列表中找出某个值第一个匹配项的索引位置
5list.insert(index, obj)
将对象插入列表
6list.pop([index=-1])
移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
7list.remove(obj)
移除列表中某个值的第一个匹配项
8list.reverse()
反向列表中元素
9list.sort( key=None, reverse=False)
对原列表进行排序
10list.clear()
清空列表
11list.copy()
复制列表

3. extend【加的元素会被拆分】

l=['a','b','c']
l2='defg'
l.extend(l2)
print(l)
l3=['h','i','g']
t=('klm')
l.extend(l3)
l.extend(t)
print(l)
#['a', 'b', 'c', 'd', 'e', 'f', 'g']
#['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'g', 'k', 'l', 'm']

'''
l=[1,2,3]
l2=[4,5,6]
l.append(l2)#会将l2作为一个元素,加到l的后面
print(l)#l[3]为[4,5,6]
结果:[1, 2, 3, [4, 5, 6]]
'''

4. index(obj,start,end)【匹配元素obj,起始位置,结束位置】【未找到元素obj报ValueError】

        起始位置与结束位置没有强制要求

        即使起始位置小于0或结束位置大于list最大长度,也是从list的0匹配到最大索引

5. insert(index,obj)【要插入的位置,插入的元素】【从插入位置的后续元素全部进行后移】

         当插入位置小于0时,随机插入

         当插入位置大于list最大长度,进行尾插

l=['a','b','d','e','a','b','c','d']
print(l.index('a',2,6))
l.insert(l.index('d'),'c')#在'd'的前面插入新元素
#l.insert(0,'c')#进行头插
print(l)

6. pop([index])【删除指定index的元素,index默认为-1】

l=[1,2,3,4,'q',5,6]
print(l.pop(0))
print(l.pop(l.index('q')))
print(l)

'''
1
q
[2, 3, 4, 5, 6]
'''

7. remove【与del】【remove未找到删除元素报错】

l=['a','b','c']
l.remove('b')#l.remove(l[1])
# del l[1]
print(l)#上两句均是删除索引为1的元素,并将后续向前移动

l=[1,2,3,4,5,6]
del l[2:5]
print(l)

使用remove或del正遍历删除符合预期时便会涉及到长度不断减少,使用for会出现IndexError,

逆遍历会出现元素前移 ,使用for会出现元素多打印

#正遍历删除
l=[1,2,3,4,5,6,7,8,9,10,11]
for i in range(len(l)):
    if l[i]%5 == 0:
        l.remove(l[i])
    print(l[i],end=',')
#逆遍历删除
l=[1,2,3,4,5,6]
for i in range(len(l)-1,-1,-1):
    if l[i]%5 == 0:
        l.remove(l[i])
    print(l[i],end=',')

l=[1,2,3,4,5,6]
#使用for循环
for i in range(len(l)-1,-1,-1):#下面更改在下次循环前失效
    if l[i]%5 == 0:
        del l[i]#l.remove(l[i])
        i-=1
    print(l[i],end=',')#没有达到打印一遍的需求
#使用while循环
j=len(l)
while 1:
    j-=1
    if j <0:
        break
    if l[j]%5 == 0:
        l.remove(l[j])
        j-=1
    print(l[j])

9. sort【在原对象的基础上进行更改,返回None】 

l.sort(key=None,reverse=False)#reverse=True为降序,为False为升序;key按照什么进行排序,
p = [('a',22.5,120),('b',65.1,79),('c',23.4,36),('d',22.5,128)]
print(p)
p.sort(key=lambda t:t[2],reverse=False)#对[120,79,36,128]进行排序
#print(p.sort(key=lambda t:t[2],reverse=False))#此行打印出None
#使用匿名函数,参数为t,按照每行的索引为2的元素进行排序【二维表的列】
print(p)

11. copy【重新创建对象】

l=['a','b','c']
l2=l.copy()#不是一个对象
l3=l#是一个对象
print(id(l),id(l2),id(l3))#l与l3的地址相同同属于一个对象
l[2]='e'
print(l,l2,l3)#l与l3的'c'变为'e',而l2不进行改变

除了使用copy方法外还可以使用+或切片来生成新的对象【例如

        l2+=l
        l3=l[:]

元组tuple【不可更改,加减乘除均会报错】【索引正向从0开始,逆向从-1开始】

将多个元素用逗号隔开,放入圆括号中称为元组【单个元素,可在元素后加一个逗号,以解除黄色警告】

t=(6,)

元组同列表一样具有相同函数

  1. 求长len(tuple)
  2. 求当前元组最大值max(tuple)【元组须是整型或浮点型组成的】
  3. 求当前元组最小值min(tuple)【元组须是整型或浮点型组成的】
  4. 将列表转换为元组tuple(tuple)
t=(3,4,2,9,12,56,1,5)
print(len(t))
print(max(t))
print(min(t))

元组的不可变是指向的内存中的内容不可变【试图更改数据时会报TypeError】

                             

 重新赋值绑定了新的地址,就不是原来的对象【列表也一样】

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值