四、列表

python列表和C语言的数组差不多,但其元素可以是不同数据类型。

  1. 列表操作
  • 创建列表
    e.g.
list1 = [1, '1', "python", [1, 2]]
list1 = list()#list函数可以创建空列表
  • 添加元素
    append方法:只能添加单个元素
    extend方法:可以添加多个元素,本质为对列表的扩展
    insert方法:插入元素
    ...
    e.g.
num = [1, 2]
num.append(3)
print(num) # The result is :[1, 2, 3]
num = [1, 2]
num.extend([3, 4]) 
print(num)# The result is :[1, 2, 3, 4]
num = [1, 2,3,4]
num.insert(1, 5) # list.insert(位置(之前), 元素)
print(num) # The result is :[1, 5, 2, 3, 4]

num.insert(-1, 6)
print(num) # The result is :[1, 5, 2, 3, 6, 4]

  • 获取元素
    索引访问:list[元素索引]
    random.choice方法:从一个非空的序列中随机获取一个元素
    ...
    e.g.
num = [0, 1, 2, 3]
print(num[2]) # The result is : 2
print(num[-1]) # The result is : 3
import random
num = [0, 1, 2, 3]
print(random.choice(num)) # The result is  any element of the list "num"
  • 删除元素
    remove方法:删除指定元素,若是不存在的元素则报错
    pop方法:“弹”出指定索引的元素,返回“弹”出的元素
    del语句:即可删除元素,也可删除整个列表
    ...
    e.g.
num = ['a', 'b', 'c']
num.remove('b') 
print(num)# The result is :['a', 'c']
num = ['a', 'b', 'c']
print(num.pop(1) )# The result is :'b'
print(num)# The result is :['a', 'c']
num = ['a', 'b', 'c']
del num
# The result is showing NameError: name 'num' is not defined
  1. 列表切片(slice)
    列表的切片操作主要用于对多个连续元素的访问。
    such as:
>>> list1 = ['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> print(list1[2:5])
['c', 'd', 'e']
>>> print(list1[2:])
['c', 'd', 'e', 'f', 'g']
>>> print(list1[:5])
['a', 'b', 'c', 'd', 'e']
>>> print(list1[:])
['a', 'b', 'c', 'd', 'e', 'f', 'g']
>>> print(list1[-3:])
['e', 'f', 'g']
>>> print(list1[0:6:2])
['a', 'c', 'e']
>>> print(list1[::-1]) # reverse
['g', 'f', 'e', 'd', 'c', 'b', 'a']
>>> list1
['a', 'b', 'c', 'd', 'e', 'f', 'g']

总结为:

list[起始索引, 结束索引(不包含), 步长]

PS:列表切片只返回拷贝而不改变自身数据组成结构,但del语句和切片后的列表赋值例外。如下所示:

>>> del list1[-3:]
>>> list1
['a', 'b', 'c', 'd']
>>> list1[:2] = ['h', 'i']
>>> list1
['h', 'i', 'c', 'd']

原因是执行删除和更改操作本身就是要对原列表进行操作,否则就失去了意义。
3. 列表“邂逅”操作符

  • 比较操作符:返回布尔值
>>> list1 = [123]
>>> list2 = [456]
>>> list1>list2
False
>>> list1 = ["abc"]
>>> list2 = ["bac"]# 比较第一个字符的ASCII码
>>> list1<list2
True
>>> list1 = [123, 456]# 比较第一个元素
>>> list2 = [456, 100]
>>> list1>list2
False
  • 算术操作符
    '+'表拼接,‘*’表重复
>>> list1 = ["ba"]
>>> list2 = ["ab"]
>>> list3 = list1 + list2 # 更加推荐用extend方法进行列表拓展,另外,‘+’不可添加单个元素
>>> list3
['ba', 'ab']
>>> list4 = list1 * 3
>>> list4
['ba', 'ba', 'ba']
  • 成员操作符
>>> list1 = ['a', 'b', ['c', 'd']]
>>> 'a' in list1
True
>>> 'b' not in list1
False
>>> 'c' in list1
False
>>> ['c', 'd'] in list1
True

PS:in和not in有时候可以巧妙地用于删除列表中的重复元素
4. 列表方法
dir(list)可查看全部的列表方法
格式处理后为:

__add__          __class__          __contains__          __delattr__          __delitem__          __dir__          __doc__          __eq__          

__format__          __ge__          __getattribute__          __getitem__          __gt__          __hash__          __iadd__        __imul__          

__init__          __init_subclass__          __iter__          __le__          __len__          __lt__          __mul__          __ne__          

__new__          __reduce__          __reduce_ex__          __repr__          __reversed__          __rmul__          __setattr__  _setitem__          

__sizeof__          __str__          __subclasshook__          

append          clear          copy          count          extend          

index          insert          pop          remove          reverse          sort  

后面几个方法之前基本都有涉及,按单词字面意思便知其功能。

posted @ 2020-10-31 21:18  YuMi-sharing  阅读(75)  评论(0)    收藏  举报