前面我们讲了for循环,assert的用法,条件表达式(唯一的一个三元操作符),range()函数的使用方法。今天,我们再来介绍一下一个新的概念——列表(list)
1)开始来创建一个列表,这里主要有三种类型:
①创建一个普通列表:
>>> number = [1,2,3,4,5]
>>> print(number)
[1, 2, 3, 4, 5]
②创建一个混合列表:
>>> mix = [1,2,[1,2,3],'Arduino']
>>> print(mix)
[1, 2, [1, 2, 3], 'Arduino']
③创建一个空列表:
>>> none = []
>>> print(none)
[]
2)创建了列表之后,我们有时会不可避免的添加一些元素,这里有三种方法:
①append():
>>> list1 = ['peach','pineapple','orange','apple','banana','pear']
>>> list1.append('watermelon')
>>> print(list1)
['peach', 'pineapple', 'orange', 'apple', 'banana', 'pear', 'watermelon']
>>> list1.append('strawberry','blueberry')
Traceback (most recent call last):
File "<pyshell#9>", line 1, in <module>
list1.append('strawberry','blueberry')
TypeError: append() takes exactly one argument (2 given)
看到上面的例子,我们就明白了append()函数只有一个参数,所以用两个参数是不正确的,这个点我们叫做对象的方法,而且添加元素是放在列表的末尾的
②extend()——用一个列表来扩张另一个列表,也是加到末尾的
>>> list1.extend('strawberry','blueberry')
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
list1.extend('strawberry','blueberry')
TypeError: extend() takes exactly one argument (2 given)
这是为什么呢?extend()添加元素是要求我们必须要用列表,正确的写法是这样:
>> list1.extend(['strawberry','blueberry'])
>>> print(list1)
['peach', 'pineapple', 'orange', 'apple', 'banana', 'pear', 'watermelon', 'strawberry', 'blueberry']
③insert(),有两个参数,第一个参数是在列表中的位置,后面的第一个参数表示要插入的名称:
>>> list1.insert(1,'papaya')
>>> print(list1)
['peach', 'papaya', 'papaya', 'pineapple', 'orange', 'apple', 'banana', 'pear', 'watermelon', 'strawberry', 'blueberry']
3)从列表中获取元素:跟数组一样,我们可以通过元素索引值(index)从列表获取单个元素(列表索引值从0开始)
>>> list1[0]
'peach'
4)从列表删除元素,也有三种方法:
①remove()——不需要知道元素在表中的确切位置
>>> list1.remove('blueberry')
>>> print(list1)
['peach', 'papaya', 'papaya', 'pineapple', 'orange', 'apple', 'banana', 'pear', 'watermelon', 'strawberry']
②del——这个删除整个列表,也可以删除某一个具体的元素
>>> del list1[2]
>>> print(list1)
['peach', 'papaya', 'pineapple', 'orange', 'apple', 'banana', 'pear', 'watermelon', 'strawberry']
>>> del list1
>>> print(list1)
Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
print(list1)
NameError: name 'list1' is not defined
③pop()——删除某一个元素之后可以显示出来
>>> list1 = ['peach','pineapple','orange','apple','banana','pear']
>>> list1.pop(1)
'pineapple'
4)列表分片(slice)——一次性或多个元素
>>> list1[1:3]
['orange', 'apple']
不包括最右边的数字,有时候我们偷懒的时候,会有这些写法
>>> list1[:3]
['peach', 'orange', 'apple']
>>> list1[1:]
['orange', 'apple', 'banana', 'pear']
>>> list1[:]
['peach', 'orange', 'apple', 'banana', 'pear']
提到list1[:],我们自然就会想到这个:
>>> list2 = list1
>>> list3 = list1[:]
>>> print(list2,list3)
['peach', 'orange', 'apple', 'banana', 'pear'] ['peach', 'orange', 'apple', 'banana', 'pear']
那这两种方式是不是一样呢?当然不是,为什么呢?看一下下面这个例子:
>>> del list1[2]
>>> print(list2,list3)
['peach', 'orange', 'banana', 'pear'] ['peach', 'orange', 'apple', 'banana', 'pear']
你会发现这个list2和list3的值此时随着list1的修改而结果发生变化,所以这个list2我们叫做list1的复制,而list3叫做list1的拷贝
5)列表的一些常用操作符:
①比较操作符:
>>> list1 = [1,2,3]
>>> list2 = [2,3,4]
>>> list1 > list2
False
②逻辑操作符:
>>> list3 = [2,3,6]
>>> list4 = [2,5,7]
>>> (list1 > list2 )and (list3 < list4)
False
③连接操作符:
>>> list5 = list1 + list2
>>> list5
[1, 2, 3, 2, 3, 4]
④重复操作符:
>>> list6 = list5 * 2
>>> list6
[1, 2, 3, 2, 3, 4, 1, 2, 3, 2, 3, 4]
⑤成员关系操作符:
>>> 1 not in list2
True
其中,要注意的是not in或者是in只能表示一层关系:
>>> list7 = [1,24,[1,2,5],list2]
>>> list7
[1, 24, [1, 2, 5], [2, 3, 4]]
>>> 2 in list7
False
>>> 2 in list7[2]
True
6)讲到最后,我们在介绍一下列表的一些常用的小伙伴们:
①我们首先来看一下list的小伙伴有哪些吧:
>>> 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']
②count()——用来列表中某个数据出现的次数:
>>> list1 = [1,2,6,23,7,2,8,2]*3
>>> list1
[1, 2, 6, 23, 7, 2, 8, 2, 1, 2, 6, 23, 7, 2, 8, 2, 1, 2, 6, 23, 7, 2, 8, 2]
>>> list1.count(2)
9
③index()——该数据在列表中出现的第一次的位置
>>> list1.index(2)
1
④reverse()——将列表中的数据逆序排列:
>>> list1.reverse()
>>> list1
[2, 8, 2, 7, 23, 6, 2, 1, 2, 8, 2, 7, 23, 6, 2, 1, 2, 8, 2, 7, 23, 6, 2, 1]
⑤sort()——顺序排列:
>>> list1.sort()
>>> list1
[1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 6, 6, 6, 7, 7, 7, 8, 8, 8, 23, 23, 23]
⑥其实reverse和sort是可以结合在一起的:
>>> list1.sort(reverse = True)
>>> list1
[23, 23, 23, 8, 8, 8, 7, 7, 7, 6, 6, 6, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 1, 1]
好了,列表的知识真的是太丰富了,4000字啊,噗~~~