目录: 0x00 - Python学习笔记
列表简介
序列 是 Python 中最基本的数据结构。序列中的每个元素都分配一个数字(索引)。
序列 有 6 种内置类型,最常见的两种就是 列表和 元组
列表 用[ ]
包裹,用,
分隔,它里面的数据不需要有相同的类型
>>> dir(list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__',
'__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__',
'__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__',
'__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__',
'__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__',
'__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend',
'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
操作列表
增
- 创建列表
- 添加元素
使用append()
方法向列表中添加一个元素
empty.append('qwe')
使用extend()
方法,用一个列表来扩展另一个列表
empty.extend(['123' , 456])
使用insert(n, #)
方法 在n+1
的位置插入#
empty.insert(2, 'thred')
删
使用 remove()
方法删除列表中的一个元素
member.remove(123)
使用 del
语句删除数据或整个列表
del member[1]
使用 pop()
方法删除列表中的最后一个元素,并返回它
member.pop()
也可以指定删除:member.pop(1)
查
同样的:索引从 0 开始
用其实现数据交换:
列表切片(slice)
我们可以利用索引值从列表中获取一个元素,也可以利用切片的方法一次性获取多个元素
>>> member
['asd', 'second', 'thrid', 528, 123]
# 第二个到第三个
>>> member[1:3]
['second', 'thrid']
# 从开头到第三个
>>> member[:3]
['asd', 'second', 'thrid']
# 从第二个到最后
>>> member[1:]
['second', 'thrid', 528, 123]
# 全部=>实现拷贝
>>> member[:]
['asd', 'second', 'thrid', 528, 123]
列表操作符
比较
默认以第0
个元素作比较,不再往后比较
>>> list1 = [5, 100]
>>> list2 = [100, 5]
>>> list1 > list2
False
拼接
+
用于拼接两个列表
>>> list1
[5, 100]
>>> list2
[100, 5]
>>> list3 = list1 + list2
>>> list3
[5, 100, 100, 5]
重复
*
用于将列表内元素复制,后接需要复制的次数
>>> list1 = [123]
>>> list2 = list1 * 3
>>> list2
[123, 123, 123]
>>> list2 *= 2
>>> list2
[123, 123, 123, 123, 123, 123]
成员关系操作符
# 简单的判断
>>> list2
[123, 123, 123, 123, 123, 123]
>>> 123 in list2
True
>>> 123 not in list2
False
>>> list3 = [123, ['asd', 456], 456]
# 访问列表内的列表的元素
>>> list3[1][0]
'asd'
# 判断列表内列表关系
>>> 'asd' in list3
False
>>> 'asd' in list3[1]
True
其他方法
- 计算数据出现次数
>>> list1 = [123, 123, 123, 123, 123]
>>> list1.count(123)
5
- 查找数据出现位置,默认从第
0
个开始且返回找到的第一个,也可以指定范围
>>> list1 = [123, 456, 456, 456, 123, 123, 456, 456]
>>> list1.index(123)
0
>>> list1.index(123, 1, 6)
4
- 逆序
列表中数据会被逆序(其中的列表不会,只会改变他的位置)
>>> list1 = [123, ['asd', 456], 456]
>>> list1.reverse()
>>> list1
[456, ['asd', 456], 123]
- 排序
排序的意思是将列表内的数据安从小到大排序(默认)
>>> list1 = [2, 5, 6, 8, 1, 0, 6, 7, 4]
>>> list1.sort()
>>> list1
[0, 1, 2, 4, 5, 6, 6, 7, 8]
他有三个默认参数,这里展示一种
>>> list1 = [2, 5, 6, 8, 1, 0, 6, 7, 4]
>>> list1.sort(reverse=True)
>>> list1
[8, 7, 6, 6, 5, 4, 2, 1, 0]
- 拷贝
可以用list2 = list1[:]
拷贝
>>> list1 = [1,3,5,6,2,8,2,1,5,0,4,6]
>>> list2 = list1[:]
>>> list1.sort()
>>> list1
[0, 1, 1, 2, 2, 3, 4, 5, 5, 6, 6, 8]
>>> list2
[1, 3, 5, 6, 2, 8, 2, 1, 5, 0, 4, 6]
但如果是直接赋值的话,相当于起了一个新名字
>>> list1 = [8,5,7,3,1,6,0]
>>> list2 = list1
>>> list1.sort()
>>> list1
[0, 1, 3, 5, 6, 7, 8]
>>> list2
[0, 1, 3, 5, 6, 7, 8]
元组
元组和列表非常相似,但他是不可改变(增删改,排序)的类型
操作元组
- 创建元组
大部分元组用小括号创建
>>> tuple1 = (2,3,5,1,0,8,6)
>>> tuple1
(2, 3, 5, 1, 0, 8, 6)
- 创建细节
当元组只有一个数据时,给它后面加上一个逗号,才会是元组
除了创建空元组,其他都不需要括号,但不能没有逗号,建议带上括号,以表明他是一个元组,这样会增加代码的简洁性
# 这不是一个元组
>>> tuple1 = (1)
>>> type(tuple1)
<type 'int'>
# 就算没有括号也是元组
>>> tuple2 = 0, 1, 2
>>> type(tuple2)
<type 'tuple'>
# 创建一个元素的元组时加上逗号
>>> tuple3 = (1,)
>>> type(tuple3)
<type 'tuple'>
# 创建一个空元组
>>> tuple4 = ()
>>> type(tuple4)
<type 'tuple'>
- 无法增加或改变元素
>>> tuple1 = (0, 1, 2, 3, 4, 5, 6)
>>> tuple1[1] = 10
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
tuple1[1] = 10
TypeError: 'tuple' object does not support item assignment
- 查询方法与列表相同
>>> tuple1 = (0, 1, 2, 3, 4, 5, 6)
>>> tuple1[2:4]
(2, 3)
>>> tuple1[:4]
(0, 1, 2, 3)
>>> tuple1[2:]
(2, 3, 4, 5, 6)
>>> tuple1[:]
(0, 1, 2, 3, 4, 5, 6)
- 重复操作符
>>> 8 * 5
40
>>> 8 * (5,)
(5, 5, 5, 5, 5, 5, 5, 5)
>>> 8 * 5,
(40,)
更新元组
虽然元组不可更改,但我们可以使用切片的方法更新元组
>>> tuple1 = ('asd', 'qwe', 'dd', 'xx')
>>> tuple1 = tuple1[:1] + (123,) + tuple1[1:]
>>> tuple1
('asd', 123, 'qwe', 'dd', 'xx')
其他的功能如逻辑操作符、关系操作符等如列表相同,不再赘述