python 复习之列表 list

列表定义:

    1.列表中由一系列特定元素组成,元素与元素之间可能没有任何关联关系,但他们之间有先后顺序关系。

    2.列表是一种序列

    3.列表可以改变存储的各个元素

    4.列表是一种容器

列表的构造函数:

    list() 生成一个空列表,等同于[]

    list(iterable) 用可迭代对象初始一个列表

列表的运算:

算术运算符:

+ += * *=

+ 拼接列表

>>> list2 = [4,5,6]
>>> list1 + list2
[1, 2, 3, 4, 5, 6]

+= 原列表与右侧列表拼接后变量绑定新列表

>>> list1 += list2
>>> list1
[1, 2, 3, 4, 5, 6]

* 生成重复的列表

>>> list1 *3
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]
>>> 3* list1
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]

*= y用原列表生成重复的列表,用变量绑定新生成的列表

>>> list1 *= 2
>>> list1
[1, 2, 3, 4, 5, 6, 1, 2, 3, 4, 5, 6]

列表的in / not in 运算符:

    判断一个值是否存在列表中,如果存在则返回True,否则返回False

>>> l = ['1213', 'LSK', 'Lsk', '']
>>> 'lsk' in l
False
>>> 'Lsk' in l
True

列表的索引:

语法:

    列表[整数表达式]

例:

>>> l = ['1213', 'LSK', 'Lsk', '']
>>> l[2]
'Lsk'
>>> l[2:]
['Lsk', '']
>>> l[::-1]
['', 'Lsk', 'LSK', '1213']

列表是可变的序列,可以通过索引赋值来改变列表元素:

>>> l[1] = 'haha'
>>> l
['1213', 'haha', 'Lsk', '']

常用的序列函数:

    len(leq) # 返回序列长度

    max(seq) # 返回序列的最大值元素

    min(seq) # 返回序列的最小值元素

    sum(seq) # 返回序列中所有元素的和

    any(seq) # 真值测试,如果序列中其中一个值为True则返回True,否则返回False

    all(seq) # 真值测试,如果序列中所有值为True则返回True,否则返回False

例:

>>> l = [1,2,'']
>>> any(l)
True
>>> all(l)
False

del语句:

作用:

    删除变量

    删除列表中的元素

删除单个元素:

    del 列表[整数索引]

用切片删除单个或多个元素

    del 列表[::]

例:

>>> l
[1, 2, '']
>>> del l
>>> l
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
NameError: name 'l' is not defined

>>> l = [1, 2, 3, 4, 5]
>>> del l[1]
>>> l
[1, 3, 4, 5]

>>> del l[0:2]
>>> l
[4, 5]

常用的列表方法:

L.index(value[, begin[, end]]) #返回对应元素的下标,begin为开始索引,end为结束索引

>>> l = list(range(1,10,2))
>>> l.index(3)
1
>>> l.index(3,2,4)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: 3 is not in list

L.insert(index, obj) # 将某个元素插入到列表中的指定位置

>>> l.insert(0,'lsk')
>>> l
['lsk', 1, 3, 5, 7, 9]

L.count(x) # 返回列表中元素的个数

>>> l.count(1)
1

L.remove(x) # 从列表中删除第一次出现在列表中的值

>>> l
['lsk', 1, 3, 5, 7, 9]
>>> l.remove(3)
>>> l
['lsk', 1, 5, 7, 9]

L.copy() # 复制此列表(只复制一层 ,不会复制深层对象),等同于l2 = l1[:],浅拷贝

>>> l2 = l.copy()
>>> l2 is l
False
>>> l2 == l
True

L.append(x) # 在列表中追加单个元素

>>> l
['lsk', 1, 5, 7, 9]
>>> l.append('haha')
>>> l
['lsk', 1, 5, 7, 9, 'haha']

L.extend(lst) # 向列表追加另一个列表

>>> l
['lsk', 1, 5, 7, 9, 'haha']
>>> l.extend([1,2,3])
>>> l
['lsk', 1, 5, 7, 9, 'haha', 1, 2, 3]

L.clear() 清空列表,等同于del l[:]

>>> l.clear()
>>> l
[]

L.sort(reverse=False) # 将列表的顺序按值的从小到大的顺序进行排列

>>> l = [5, 3, 1, 7, 2, 4, 9, 6]
>>> l.sort()
>>> l
[1, 2, 3, 4, 5, 6, 7, 9]

L.reverse() # 列表反转

>>> l.reverse()
>>> l
[9, 7, 6, 5, 4, 3, 2, 1]

L.pop([index]) # 删除索引对应的元素,如果不加索引,默认删除最后一个元素,同时返回移除元素。

>>> l
[9, 7, 6, 5, 4, 3, 2, 1]
>>> l.pop(-1)
1
>>> l
[9, 7, 6, 5, 4, 3, 2]

列表推导式:

    列表推导式是用可迭代对象依次生成列表内元素的方式。

    列表推导式是表达式

语法:

    [表达式 for 变量 in 可迭代对象]

    [表达式 for 变量 in 可迭代对象 if 条件]

说明:

    1.先从可迭代对象取一个值,用变量绑定。

    2.调用表达式,把当前的表达式结果追加到列表中

    3.重复上述步骤,直到可迭代对象不再提供数据为止

    4.for in 表达式的if子句可以省略,省略后将对所有生成的对象进行处理

    5.如果if条件语句的真值测试为False,则可迭代对象生成的数据将被丢弃

例:

# 生成一个1~9平方的列表
>>> [x**2 for x in range(1,10)]
[1, 4, 9, 16, 25, 36, 49, 64, 81]

# 生成奇数列表
>>> [x for x in range(20) if x % 2 == 1]
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]
>>> [x for x in range(1, 20, 2)]
[1, 3, 5, 7, 9, 11, 13, 15, 17, 19]

列表推导式嵌套:

语法:

    [表达式1

        for 变量1 in 可迭代对象1

            for 变量2 in 可迭代对象2(if 真值表达式2)

    ]

例:

>>> s1 = 'lsk'
>>> s2 = 'LSK'
>>> [y+x for x in s1 for y in s2]
['Ll', 'Sl', 'Kl', 'Ls', 'Ss', 'Ks', 'Lk', 'Sk', 'Kk']

用列表推导式生成:[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

>>> [[x, x+1, x+2] for x in range(1, 8, 3)]
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]

字符串文本解析方法:

    S.split(sep=None) # 用sep字符将字符串分隔,返回关于字符串的列表

    S.join(iterable) # 将一个可迭代对象用字符S进行拼接,生成新的字符串

例:

>>> s = 'lsk,LSK,Lsk'
>>> s.split(',')
['lsk', 'LSK', 'Lsk']

>>> l = ['lsk', 'Lsk', 'LSK']
>>> s = '--->'.join(l)
>>> s
'lsk--->Lsk--->LSK'

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值