List
一、创建一个List
a_list=['a','b','mp3','z','example']
a_list[0]
a
a_list[-1]
example
1、List是个顺序排列的集合
2、List是个从0开始计数的数组,第一个元素肯定是a_list[0]
所以最后一个元素是 List长度-1
3、使用负数倒序访问List元素,List的最后一个元素必定是a_list[-1]
负数索引值的计算公式
a_list[-n] == a_list[len(a_list) - n]
二、截断一个List
可以从一个已经定义好的List中获取特定位置的几个元素
在list下标中指定两个索引值,这样list的返回值就是包含特定元素的新list
>>> a_list
['a', 'b', 'mpilgrim', 'z', 'example']
>>> a_list[1:3] 1
['b', 'mpilgrim']
>>> a_list[1:-1] 2
['b', 'mpilgrim', 'z']
>>> a_list[0:3] 3
['a', 'b', 'mpilgrim']
>>> a_list[:3] 4
['a', 'b', 'mpilgrim']
>>> a_list[3:] 5
['z', 'example']
>>> a_list[:] 6
['a', 'b', 'mpilgrim', 'z', 'example']
1、从1开始但不包含3的List
2、从list的第二个元素到list最后一个元素之间的,但不包括最后一个
3、按下标从0到3的,但不包括3的
效果同上,0可以省略
4、从下标n到数组最后一个,包括最后一个
5、list的全部元素
三、向List添加元素
>>> a_list = ['a']
>>> a_list = a_list + [2.0, 3] 1
>>> a_list 2
['a', 2.0, 3]
>>> a_list.append(True) 3
>>> a_list
['a', 2.0, 3, True]
>>> a_list.extend(['four', 'Ω']) 4
>>> a_list
['a', 2.0, 3, True, 'four', 'Ω']
>>> a_list.insert(0, 'Ω') 5
>>> a_list
['Ω', 'a', 2.0, 3, True, 'four', 'Ω']
1、使用+号操作符连接list创建新的list,list没有数量限制,但这种操作实际是创建了2个list对内存消耗比较大
2、list可以装载任意数据类型的元素,不必是同一类型
3、append()方法可以将一个元素(任意数据类型)添加到list末尾
4、List实际是个类,创建一个List实际上是实例化一个类,extend()方法接收一个list作为参数并把新list的每个元素添加到原有的list中
5、insert()方法添加一个元素到list中,第一个参数是添加到list的位置的索引值
list的元素可以重复
四、在List中查找值
>>> a_list = ['a', 'b', 'new', 'mpilgrim', 'new']
>>> a_list.count('new') ①
2
>>> 'new' in a_list ②
True
>>> 'c' in a_list
False
>>> a_list.index('mpilgrim') ③
3
>>> a_list.index('new') ④
2
>>> a_list.index('c') ⑤
Traceback (innermost last):
File "<interactive input>", line 1, in ?
ValueError: list.index(x): x not in list
1、count()方法返回查找值在list中的数量
2、如果只想知道是否包含查找的值可以使用in,返回True 或 False,这种方法要比count()方法速度快
3、使用index()方法返回值所在的索引值,也可以添加第二个参数作为查找开始位置,第三个参数作为查找结束为止
4、index()方法只返回第一次查找到的位置
5、因为-1在Python中是有意义的索引值,所以index()方法没有找到对应的位置会抛异常
五、从List中移除元素
使用del删除
>>> a_list = ['a', 'b', 'new', 'mpilgrim', 'new']
>>> a_list[1]
'b'
>>> del a_list[1] 1
>>> a_list
['a', 'new', 'mpilgrim', 'new']
>>> a_list[1] 2
'new'
1、使用del命令删除特定位置
2、删除后,后面的元素会自动填补被删除的下标,下标之间不会有空隙
使用remove方法删除
>>> a_list.remove('new') 1
>>> a_list
['a', 'mpilgrim', 'new']
>>> a_list.remove('new') 2
>>> a_list
['a', 'mpilgrim']
>>> a_list.remove('new')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: list.remove(x): x not in list
1、使用remove()方法,remove方法接受一个值,并将第一个遇到的删除,同样下标无间隙
2、使用remove方法未能移除一个值时会抛异常
使用pop方法移
>>> a_list = ['a', 'b', 'new', 'mpilgrim']
>>> a_list.pop() 1
'mpilgrim'
>>> a_list
['a', 'b', 'new']
>>> a_list.pop(1) 2
'b'
>>> a_list
['a', 'new']
>>> a_list.pop()
'new'
>>> a_list.pop()
'a'
>>> a_list.pop() 3
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: pop from empty list
1、调用pop()方法不给参数,将默认删除list的最后一个元素
2、调用pop()方法并传一个索引值,将会删除特定位置的值
3、在空的list调用pop()方法会抛异常
七、使用boolean等式判断list是否为空
>>> def is_it_true(anything):
... if anything:
... print("yes, it's true")
... else:
... print("no, it's false")
...
>>> is_it_true([]) 1
no, it's false
>>> is_it_true(['a']) 2
yes, it's true
>>> is_it_true([False]) 3
yes, it's true
1、在boolean等式中,空的list返回false
2、只要有一个元素,list返回true
3、是要有一个元素就是真,和元素的数据类型无关
Turples
tuple是个不可变list
>>> a_tuple = ("a", "b", "mpilgrim", "z", "example") 1
>>> a_tuple
('a', 'b', 'mpilgrim', 'z', 'example')
>>> a_tuple[0] 2
'a'
>>> a_tuple[-1] 3
'example'
>>> a_tuple[1:3] 4
('b', 'mpilgrim')
1、tuple与list定义的方式相同,只是全部元素被()包裹而不是[]
2、tuple的元素顺序是既定的,索引值从0开始
3、tuple也可以使用负数索引
4、tuple也可以截断,截断后返回一个新的tuple
5、tuple没有append,extend,insert,remove,pop方法
6、tuple可以查找变量
7、tuple判断空的方式与list相同
8、创建一个元素的tuple,必须在第一个元素后加逗号,不加的话python会认为多了对括号
a_tuple = ('a',)
9、使用tuple一次对多个变量赋值
>>> v = ('a', 2, True)
>>> (x, y, z) = v 1
>>> x
'a'
>>> y
2
>>> z
True
v是个tuple变量,同时为xyz三个变量赋不同的3个值