列表
1.创建列表
>>> num = [1,2,3,4,5,6]
mix = [1,'美女',3.14,[1,2,3,4,5,6]]
empty = []
2.添加元素
----append()方法:向列表末尾添加单个元素
>>> num = [1,2,3,4,5,6] >>> num.append(7) >>> num [1, 2, 3, 4, 5, 6, 7]
append()不能添加多个元素
>>> num.append(8,9) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: append() takes exactly one argument (2 given)
----extend()方法:向列表末尾添加多个元素
>>> num = [1,2,3,4,5,6,7] >>> num.extend([8,9]) >>> num [1, 2, 3, 4, 5, 6, 7, 8, 9]
事实上extend()方法是使用一个列表来扩展另一个列表,因此参数是列表,而不是单个元素
----insert()方法:两个参数,第一个是代表列表中的位置,第二个是在这个位置处插入一个元素
>>> num.insert(1,0) >>> num [1, 0, 2, 3, 4, 5, 6, 7, 8, 9]
3.获取元素
通过元素的索引值从列表中获取单个元素,注意列表的索引是从0开始的
>>> name = ['字母罗','煤球','内马尔','萨拉赫'] >>> name[0] '字母罗' >>> name[2] '内马尔'
当然可以进行位置互相调换
>>> name[1],name[3] = name[3],name[1] >>> name ['字母罗', '萨拉赫', '内马尔', '煤球']
4.删除元素
----remove()
特点:①只需要知道列表中存在要删除的元素即可,若要删除的元素不再列表中,则会报错 ②不能指定删除某个位置的元素
>>> name.remove('字母罗') >>> name ['萨拉赫', '内马尔', '煤球'] >>> name.remove('大宝') Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: list.remove(x): x not in list
----del:是个语句,并不是列表的方法
>>> del name[1] >>> name ['萨拉赫', '煤球'] >>> del name >>> name Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'name' is not defined
----pop()方法:‘弹出’元素
>>> name = ['字母罗','煤球','内马尔','萨拉赫'] >>> name.pop() '萨拉赫' >>> name.pop() '内马尔' >>> name ['字母罗', '煤球'] >>>
pop()默认是弹出列表最后一个元素,不过也可以加上索引值作为参数,弹出指定元素
>>> name = ['字母罗','煤球','内马尔','萨拉赫'] >>> name.pop(2) '内马尔' >>> name ['字母罗', '煤球', '萨拉赫']
5.列表分片(slice)
利用列表分片,可以获取多个元素
列表分片就是建立在原列表的一个拷贝,得到一个新的列表
>>> name[0:2] ['字母罗', '煤球'] >>> name ['字母罗', '煤球', '内马尔', '萨拉赫']
>>> name[:2] ['字母罗', '煤球'] >>> name[1:] ['煤球', '内马尔', '萨拉赫'] >>> name[:] ['字母罗', '煤球', '内马尔', '萨拉赫']
结束位置的元素不包含。默认开始位置是0,结束位置去掉后默认为到末尾的所有元素
第三个参数,步长
>>> list1 = [1,2,3,4,5,6,7,8,9] >>> list1[0:9:2] [1, 3, 5, 7, 9] >>> list1[::2] [1, 3, 5, 7, 9]
>>> list1[::-1] [9, 8, 7, 6, 5, 4, 3, 2, 1] >>>
6.列表与常用的操作符
>>> list1 = [123] >>> list2 = [234] >>> list1 > list2 False
>>> list3 = ['abc'] >>> list4 = ['bcd'] >>> list3 < list4 True
字符串的比较是第一个字符对应的ASCII码值得大小
>>> list1 = [123,456] >>> list2 = [234,123] >>> list1 > list2 False
当列表中包含多个元素时,从第一个元素开始比较,第一个赢了,整个列表就赢了
---加法(+):连接操作符,相当于extend()实现的效果
>>> list1 = [123,456] >>> list2 = [234,567] >>> list3 = list1 + list2 >>> list3 [123, 456, 234, 567] >>>---乘号(*):重复操作符
>>> list1 = [123] >>> list1 * 3 [123, 123, 123] >>> list1 *= 5 >>> list1 [123, 123, 123, 123, 123] >>>
---成员关系操作符:in 和not in
>>> name = ['字母罗', '煤球', '内马尔', '萨拉赫'] >>> '大宝' in name False >>> '煤球' not in name False
>>> name = ['字母罗', '煤球', ['老司机','壕人'],'内马尔', '萨拉赫'] >>> '老司机' in name False >>> '老司机' not in name True >>> '老司机' not in name[2] False >>> '老司机' in name[2] True >>>二维数组可以这样访问:
>>> name[2][0] '老司机' >>>
7.列表的一些方法
>>> 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,1,2,3,5,8,13,19] >>> list1.count(1) 2
----index():返回它的参数在列表中的位置
>>> list1.index(1) 0
>>> start = list1.index(1) + 1 >>> stop = len(list1) >>> list1.index(1,start,stop) 1 >>>
也可以这样查找后续的目标位置
---reverse():将整个列表原地翻转
>>> list1 = [1,2,3,4,5,6,7,8,9] >>> list1.reverse() >>> list1 [9, 8, 7, 6, 5, 4, 3, 2, 1] >>>
---sort():用指定方式队对列表的成员进行排序,默认不需要参数,从小到大排列
>>> list1 = [8,6,4,3,10,15,1] >>> list1.sort() >>> list1 [1, 3, 4, 6, 8, 10, 15] >>>
sort(func,key,reverse),三个参数
sort的默认值为sort(reverse=False),表示不颠倒顺序
将列表从小到大进行排序:
>>> list1 = [8,6,4,3,10,15,1] >>> list1.sort(reverse=True) >>> list1 [15, 10, 8, 6, 4, 3, 1]
8.再谈分片"拷贝"
>>> list1 = [1,2,3,4,5,6] >>> lsit2 = list1[:] >>> list2 = list1[:] >>> list3 = list1 >>> >>> list1.append(7) >>> list1 [1, 2, 3, 4, 5, 6, 7] >>> list2 [1, 2, 3, 4, 5, 6] >>> list3 [1, 2, 3, 4, 5, 6, 7] >>>
① list1和list2指向的都是同一个列表,如果列表变化,则list1和list2都会变化,并不是独立的
② list2属于从从list1分片得到的,也就是拷贝得到的新列表
作业题:
1.列表内可以存放的东西?
列表内可以存放各种类型的数据
2.向列表增加元素有哪些方法?
append():向列表尾部增加单个元素
extend():参数为列表,向列表尾部增加一个列表的元素
insert():两个参数,第一个是列表中的位置,第二个是要增加的元素
3.append()方法和extend()方法都是向列表的末尾增加元素,请问有什么区别?
append():向列表尾部增加单个元素
extend():参数为列表,向列表尾部增加一个列表的元素
4.member.append(['竹林小溪','小桥流水'])和member.extend(['竹林小溪','小桥流水'])实现的效果是一样的吗
举例说明:
>>> list1 = [1,2,3,4,5,6] >>> list1.append([7,8]) >>> list1 [1, 2, 3, 4, 5, 6, [7, 8]] >>> >>> >>> list1 = [1,2,3,4,5,6] >>> list1.extend([7,8]) >>> list1 [1, 2, 3, 4, 5, 6, 7, 8] >>>
明显是不同的
5.有列表name = ['M','E','A','T'],如果想在'E'和'A'之间插入元素'S',应该怎么插入?
>>> name = ['M','E','A','T'] >>> name.insert(2,'S') >>> name ['M', 'E', 'S', 'A', 'T'] >>>
6.将member = ['字母罗', '煤球', '内马尔', '萨拉赫']修改为member = ['字母罗',87, '煤球',89 ,'内马尔',86, '萨拉赫',80]
member.insert(1,87) member.insert(3,89) member.insert(5,86) member.append(80)
利用for循环打印member列表中的每个内容
>>> member = ['字母罗',87, '煤球',89 ,'内马尔',86, '萨拉赫',80] >>> for each in member: ... print(each) ... 字母罗 87 煤球 89 内马尔 86 萨拉赫 80 >>>
打印方式变更为['人名','分数']
count = 0 length = len(member) while count < length: print(member[count],member[count+1]) count += 2
for each in range(len(member)): if each%2 == 0: print(member[each],member[each+1])
7.请问如何将下边这个列表中的'美女'修改为'帅哥'?
list1 = [1,[1,2,['美女']],3,5,8,13,18]
>>> list1 = [1,[1,2,['美女']],3,5,8,13,18] >>> list1[1][2][0] = '帅哥' >>> list1 [1, [1, 2, ['帅哥']], 3, 5, 8, 13, 18]
8.要对一个列表进行顺序排序,请问用什么方法?
sort()方法
9.要对一个列表进行逆序排序,请问使用什么方法?
sort(reverse=True)
10.列表还有两个内置方法没给大家介绍,不过聪明的你应该可以自己摸索使用的门道吧:copy() 和 clear()
>>> list1 = [1,2,3,4,5] >>> list2 = list1.copy() >>> list2 [1, 2, 3, 4, 5] >>> list1.sort(reverse=True) >>> list1 [5, 4, 3, 2, 1] >>>
>>> list3 = list2.clear() >>> list3 >>> list2 [] >>> list1 [5, 4, 3, 2, 1] >>>
11.请将下方的列表推导式还原出来?
list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
list1 = [] for x in range(10): for y in range(10): if x % 2 ==0: if y % 2 ==0: list.append((x,y))