欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

【python学习笔记】列表

程序员文章站 2022-05-01 22:52:56
...

列表

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]
>>> 

【python学习笔记】列表

① 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))