Python基本数据类型——列表/元组

一:列表

列表是可变的数据类型,列表中的元素可以是数字,字符串,元组,列表,字典等

定义列表用[],列表的函数为list,接下来我们来学习列表的方法

既然列表是可变的那么就支持增删改查。

1:列表基础
>>> lst=["a","b","c",1,2,3,4]
>>> type(lst)  #查看类型
<class 'list'>
>>> len(lst)  #查看列表的元素个数
7
>>> dir(lst)  #查看支持的方法
============================增
1:为列表增加一个元素
>>> lst.append('A')
>>> lst
['a', 'b', 'c', 1, 2, 3, 4, 'A']
2:列表的拼接
#两个列表合成一个新列表
>>> lst1=[1,2,3,4]
>>> lst2=["a","b","c","d"]
>>> lst1+lst2
[1, 2, 3, 4, 'a', 'b', 'c', 'd']
#将lst2的每个元素添加到lst1中
>>> lst1.extend(lst2)
>>> lst1
[1, 2, 3, 4, 'a', 'b', 'c', 'd']
#将lst1作为一个元素添加到lst2中
>>> lst2.append(lst1)
>>> lst2
['a', 'b', 'c', 'd', [1, 2, 3, 4, 'a', 'b', 'c', 'd']]
3:在指定的索引位置添加元素
>>> lst
['a', 'b', 'c', 1, 2, 3, 4, 'A']
>>> lst.insert(3,"d")
>>> lst
['a', 'b', 'c', 'd', 1, 2, 3, 4, 'A']
============================删
1:删除一个元素
>>> lst
['a', 'b', 'c', 'd', 1, 2, 3, 4, 'A']
>>> lst.pop()  #从后往前删除
'A'
>>> lst
['a', 'b', 'c', 'd', 1, 2, 3, 4]
2:删除指定元素
>>> lst
['a', 'b', 'c', 'd', 1, 2, 3, 4]
>>> lst.remove('d')
>>> lst
['a', 'b', 'c', 1, 2, 3, 4]
3:根据索引位置删除元素
>>> lst
['a', 'b', 'c', 1, 2, 3, 4]
>>> lst.pop(-1)
4
>>> lst
['a', 'b', 'c', 1, 2, 3]
4:删除列表
>>> lst=[]  #清空列表
>>> lst
[]
>>> del lst  #删除内存对象
>>> lst
============================改
1:根据索引位置修改
>>> lst1
[1, 2, 3, 4, 'a', 'b', 'c', 'd']
>>> lst1[-1]="D"
>>> lst1
[1, 2, 3, 4, 'a', 'b', 'c', 'D']
============================查
1:查看列表长度
>>> lst1
[1, 2, 3, 4, 'a', 'b', 'c', 'D']
>>> len(lst1)
8
2:查看某个元素个数
>>> lst1.count(1)
1
3:查看某个元素的索引位置
>>> lst1.index("a")
4
4:列表的切片操作
#打印整个列表
>>> lst1[0:]
[1, 2, 3, 4, 'a', 'b', 'c', 'D']
#打印某个位置的元素
>>> lst1
[1, 2, 3, 4, 'a', 'b', 'c', 'D']
>>> lst1[3]
4
#打印最后一个元素
>>> lst1[-1]
'D'
#打印除最后一个元素
>>> lst1[0:-1]
[1, 2, 3, 4, 'a', 'b', 'c']
#将列表倒叙排列
>>> lst1
[1, 2, 3, 4, 'a', 'b', 'c', 'D']
>>> lst1.reverse()
>>> lst1
['D', 'c', 'b', 'a', 4, 3, 2, 1]
>>> lst[::-1]
#将列表从小到大排序(只支持一种类型)
>>> lst=[3,1,2,6,3,9,4,10]
>>> lst
[3, 1, 2, 6, 3, 9, 4, 10]
>>> lst.sort()
>>> lst
[1, 2, 3, 3, 4, 6, 9, 10]

之前我们在学习字符串的时候可以转换为列表,那么列表也是可以转换为字符串的,如下

#方法一(整体作为字符串的元素)
>>> lst
[10, 9, 6, 4, 3, 3, 2, 1]
>>> str(lst)
'[10, 9, 6, 4, 3, 3, 2, 1]'
#方法二(for循环遍历)
#!/usr/bin/python3
#coding=utf8
#Author:HeiTao

lst=[10, 9, 6, 4, 3, 3, 2, 1]
str_lst=""

for i in lst:
    str_lst+=str(i)
print(str_lst)

 列表中重要的一个概念就是深浅copy,如下

===============================浅copy
#所谓的浅copy就是两个列表调用了同一个内存对象,如下我们的lst1和lst2调用的同一个内存对象
>>> lst1
['D', 'c', 'b', 'a', 4, 3, 2, 1]
>>> lst2=lst1
>>> lst2
['D', 'c', 'b', 'a', 4, 3, 2, 1]
>>> lst1
['D', 'c', 'b', 'a', 4, 3, 2, 1]
>>> id(lst1)
46875592
>>> id(lst2)
46875592
#如果我们改变了其中一个,两个都随着改变,如下
>>> lst1.append("hello")
>>> lst1
['D', 'c', 'b', 'a', 4, 3, 2, 1, 'hello']
>>> lst2
['D', 'c', 'b', 'a', 4, 3, 2, 1, 'hello']
>>> lst2.append("world")
>>> lst1
['D', 'c', 'b', 'a', 4, 3, 2, 1, 'hello', 'world']
>>> lst2
['D', 'c', 'b', 'a', 4, 3, 2, 1, 'hello', 'world']
=======================================深copy
#所谓的深copy就是两个调用了不同的内存对象,利用内置方法copy
>>> lst
[10, 9, 6, 4, 3, 3, 2, 1]
>>> LST=lst.copy()
>>> id(lst)
47894984
>>> id(LST)
47778504
#这样两个的之间就互不影响

列表是一个可迭代的数据类型,遍历方式如下

#方法1(推荐)
#!/usr/bin/python3
#coding=utf8
#Author:HeiTao

lst=[10, 9, 6, 4, 3, 3, 2, 1]

for i in lst:
    print(lst.index(i),i)
#方法2
#!/usr/bin/python3
#coding=utf8
#Author:HeiTao

lst=[10, 9, 6, 4, 3, 3, 2, 1]

for a,b in enumerate(lst):
    print(a,b)

二:元组

元组是不可变的数据类型,定义元组方式是(),但是如果元组中的元素为可变的数据类型,那么也是可变的,如下

#定义元组
>>> tup=(1,2,3,4,[5,6,7,8])
>>> type(tup)
<class 'tuple'>
>>> id(tup)
47327896
>>> tup[-1][-1]=10
>>> tup
(1, 2, 3, 4, [5, 6, 7, 10])
>>> id(tup)
47327896
#我们将元组中的列表元素进行改变后,调用的内存对象并没有改变

元组的支持的操作方法len,count,index和切片,遍历也同列表

猜你喜欢

转载自blog.csdn.net/spades_linux/article/details/81094211