【python学习笔记】列表

列表

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

猜你喜欢

转载自blog.csdn.net/mr_humi/article/details/80789905