python List 常用方法

list 是 python 常用的数据类型,属于可变的数据类型。用 [] 表示,里面的元素用 , 隔开,并且里面的元素类型可以不同,对于每个元素,list 都有一个索引一一对应,第一个元素的索引是 0,第二个是 1,以此类推... 例如:list1 = [1,'name',['innerList'],(1,3)] ,这个 list1 包含了数字、字符串、列表、元组等不同类型的数据。

常见的声明:

names = ['A','B','C']
根据索引取值

列表的每个元素都有一个唯一的索引,代表了它在列表中的位置,索引从 0 开始

print(names[2])  # 字典的下标从0开始,2 代表第三个元素
切片

对列表获取某一部分内容,称为对列表进行切片,就像拿菜刀切了一截一样。我们根据索引进行切片,它有三个值来控制切片:

list[x:y:z]  # list 是待切片的列表

x,y,z 这三个值不一定要同时出现,每个值都可以被忽略

  • x:x 代表了切片的起始索引位置,是索引值。忽略该值,会默认从索引0开始取值。
  • y:y 代表了切片的截至索引位置,获取的切片不包含这个索引处的值。忽略该值,默认截至到列表的末尾。
  • z:z 代表了切片的步长。就是每隔 z-1 个元素取一次值,z 的默认值是 1
print(names[0:2])   # 取索引为0-2的元素,不包括2
print(names[0:])    # 取0到最后一个元素(冒号前后如果都为空,则默认代表开头和结尾)
print(names[:])     # 取所有元素
print(names[1:-1])  # 从1开始,取到最后一个元素(最后一个元素为-1,倒数第二个为-2,...)
print(names[1:-2])  # 从1开始,取到倒数第二个元素
print(names[::2])   # 从索引0开始,每次间隔 1 个元素(2-1)取一次值
深复制和浅复制

如果一个列表中嵌套了列表。当你对列表进行浅复制时,内部嵌套的列表其实是同一个对象,也就是只复制了表层的数据。深复制则会将内部嵌套的列表也复制一份。

from copy import copy,deepcopy

list1 = ['a','b',[1,2,3]]   # list1,里面包含了一个list
list2 = copy(list1)         # 浅复制一个 list2
list3 = deepcopy(list1)     # 深复制一个 list3

list1[2].append(4)          # 向 list1 嵌套的列表中添加一个元素4
list1.append('c')           # 对 list1 添加元素 c
print(list2)                # 浅复制的对象,虽然外层元素没有变化(没有多c),但是内部的 list 还是变化了(多了4),说明了内部的 list 还是共用的
print(list3)                # 深复制的对象,外层和内层都没有变化,说明这是一个全新的对象
添加

append 方法用来向列表添加元素

names.append('D')
print(names)
插入

insert(索引,元素) 用来在索引位置插入元素

names.insert(1,'E')
print(names)
删除特定元素 A

remove 方法用来删除元素。

names.remove('A')
print(names)
另一种删除方法:
del names[-1]
print(names)
pop删除,默认弹出最后一个元素,并将这个元素存放在pop中

pop 也会删除元素,但是它有个返回值,返回值就是删除的内容。

pop = names.pop()
print('pop =',pop)
获取元素的索引

index 方法可以查找某个元素所在的索引位置

print(names.index('B'))
统计元素出现的次数
print(names.count('B'))
对列表进行翻转

reverse() 可以将列表首尾颠倒过来,倒转一下。

names.reverse()
print(names)
列表排序:reserve=True代表降序排列

list.sort 可以对列表进行排序。reverse 参数可以控制排序时用 升序 还是 降序

names.sort(reverse=True)  # reverse=True 是降序
print(names)

注意:python 还有个 sorted 函数,可以返回一个新的排序后的对象,原始数据不会改变。list.sort 会将自身的顺序改变。

扩展list

extend 可以接收一个列表作为参数,并将其中的元素追加到自身中。

names2 = [1,2,3,4,5]
names.extend(names2)
print(names)
步长打印
print(names[0:-1:2])
列表生成器

在声明列表时,列表中可以接收一个简短的表达式,来动态的生成元素。

list1 = [x*3 for x in range(10)]
"""
等同于:
list1 = []
for x in range(10):
    list1.append(x*3)
"""

list2 = [i if i % 2 == 0 else 0 for i in range(10)]
"""
等同于:
list2 = []
for i in range(10):
    if i % 2 == 0:
        list2.append(i)
    else:
        list2.append(0)
"""

list3 = [i for i in range(10) if i %2==0]
"""
等同于:
list3 = []
for i in range(10):
    if i%2 == 0:
        list3.append(i)
"""
posted @ 2019-10-29 16:01  wztshine  阅读(129)  评论(0编辑  收藏  举报