一 元组
元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表
用途:一般情况下用于自己写的程序能存下数据,但是又希望这些数据不会被改变,比如:数据库连接信息等
1. 定义元组
>>> tup = ('a','b','c','d')
2. 访问元组中的元素
>>> tup = ('a','b','c','d') >>> tup ('a', 'b', 'c', 'd') >>> tup[0] 'a' >>> tup[1] 'b' >>> tup[-1] 'd'
3. 统计(count(元素))
>>> tup = ('a','b','c','a','a') >>> tup.count('a') 3
4. 索引 (index(元素))
>>> tup = ('a','b','c','a','a') >>> tup.index('c') 2
小结:
- 元组中的数据不可以被修改,不可以添加,不可以删除(除非是元组中嵌套列表或者字典,列表和字典的值是可以修改的)
- 元组的获取元素的方式和列表相同,都是通过下标访问,下标值都是从0开始
- 由于元组只能读,所以元组只有count和index两个方法
- 元组的切片功能和列表一样
二 列表
列表是Python最常用的数据类型之一,通过列表可以对数据实现最方便的存储,修改等操作。
1. 定义列表
>>> names = [] #定义空列表 >>> names = ['a','b','c'] #定义一个非空列表
2. 访问列表中的元素
>>> names ['a', 'b', 'c'] >>> names[0] 'a' >>> names[1] 'b' >>> names[2] 'c' >>> names[-1] #还可以倒着取 'c'
注:列表中的下标值是从0开始取的
3. 切片
>>> names = ['apple','huawei','xiaomi','vivo'] >>> names[1:3] #取1到3之间的元素,包括1,不包括3 ['huawei', 'xiaomi'] >>> names[1:-1] #取1到-1之间的元素,包括1,不包括-1 ['huawei', 'xiaomi'] >>> names[0:3] ['apple', 'huawei', 'xiaomi'] >>> names[:3] #从头开始取,0可以省略,效果等同于names[0:3] ['apple', 'huawei', 'xiaomi'] >>> names[2:] #想取到最后一个值,必须不能写-1,只能这么写 ['xiaomi', 'vivo'] >>> names[-3:-1] ['huawei', 'xiaomi'] >>> names[-3:] ['huawei', 'xiaomi', 'vivo'] >>> names[0::2] #后面的2表示:每隔一个元素就取一个 ['apple', 'xiaomi'] >>> names[::2] #从头开始0可以省略,效果跟上一句一样 ['apple', 'xiaomi']
切片小结:
- 序列始终都是从左向右切片的,不能从右向左
- 列表切片时,起始位的元素是包括的,结束位的元素是不包括(又叫顾头不顾尾),最后一个位置表示步长(names[开始位:结束位:步长])
- 若果从0位置取值,0可以省略
- 想取最后一个值,结束位不能为-1,因为结束位的元素不包括,所以只能留空
4. 追加(append(元素))
>>> names ['apple', 'huawei', 'xiaomi', 'vivo'] >>> names.append('oppo') >>> names ['apple', 'huawei', 'xiaomi', 'vivo', 'oppo'] #'oppo'是新加的元素
5. 插入(insert(下标值,插入的内容))
>>> names ['apple', 'huawei', 'xiaomi', 'vivo', 'oppo'] >>> names.insert(0,'samsung') #0表示需要插入的下标值,'samsung'表示插入的内容 >>> names ['samsung', 'apple', 'huawei', 'xiaomi', 'vivo', 'oppo'] #在下标值为0的地方插入'samsung' >>> names.insert(4,'neizu') >>> names ['samsung', 'apple', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo']
6. 修改
>>> names ['samsung', 'apple', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo'] >>> names[1] = 'chuizi' >>> names ['samsung', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo']
注:修改列表中的元素,直接是names[下标值] = 新元素
7. 拷贝(copy())
>>> names ['samsung', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo'] >>> names2 = names.copy() >>> names2 ['samsung', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo']
注:这里的copy都是浅copy,只能copy第一层。深浅拷贝的详细信息:python——赋值与深浅拷贝
8. 删除(del , remove() , pop())
>>> names ['samsung', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo'] >>> del names[1] #根据下标值删除元素 >>> names ['samsung', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo'] >>> names.remove('neizu') #根据元素删除 >>> names ['samsung', 'huawei', 'xiaomi', 'vivo', 'oppo'] >>> names.pop() #删除最后一个 'oppo' >>> names ['samsung', 'huawei', 'xiaomi', 'vivo'] >>> names.pop(0) #在输入下标值的情况下和del的效果是一样的,则是删掉具体某个元素 'samsung' >>> names ['huawei', 'xiaomi', 'vivo'] >>> del names #删除names这个变量 >>> names Traceback (most recent call last):File "<stdin>", line 1, in <module> NameError: name 'names' is not defined
9. 扩展(extend())
>>> names2 ['samsung', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo'] >>> names1 = ['a','b','c','d'] >>> names1.extend(names2) >>> names1 ['a', 'b', 'c', 'd', 'samsung', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo']
注:names2 的列表合并到names1中,但是,names2列表依然存在,如果想删除names2这个变量,则只需del names2即可
10. 统计(count())
>>> names1 ['a', 'b', 'c', 'd', 'samsung', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo'] >>> names1.insert(5,'a') >>> names1 ['a', 'b', 'c', 'd', 'samsung', 'a', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo'] >>> names1.count('a') #统计'a'元素的个数 2
11. 翻转(reverse())
>>> names1 ['a', 'b', 'c', 'd', 'samsung', 'a', 'chuizi', 'huawei', 'xiaomi', 'neizu', 'vivo', 'oppo'] >>> names1.reverse() #将整个列表翻转过来 >>> names1 ['oppo', 'vivo', 'neizu', 'xiaomi', 'huawei', 'chuizi', 'a', 'samsung', 'd', 'c', 'b', 'a']
12. 排序(sort())
>>> names1 ['oppo', 'vivo', 'neizu', 'xiaomi', 'huawei', 'chuizi', 'a', 'samsung', 'd', 'c', 'b', 'a'] >>> names1.sort() >>> names1 ['a', 'a', 'b', 'c', 'chuizi', 'd', 'huawei', 'neizu', 'oppo', 'samsung', 'vivo', 'xiaomi']
13. 获取下标值(index('元素'))
>>> names1 ['a', 'a', 'b', 'c', 'chuizi', 'd', 'huawei', 'neizu', 'oppo', 'samsung', 'vivo', 'xiaomi'] >>> names1.index('a') 0 >>> names1.index('huawei') 6
14. 清空列表(clear())
>>> names1 ['a', 'a', 'b', 'c', 'chuizi', 'd', 'huawei', 'neizu', 'oppo', 'samsung', 'vivo', 'xiaomi'] >>> names.clear() >>> names []