009-python基础-数据类型-列表和元组

一、列表

  • 在python中叫“列表”,其他语言中成为“数组”
  • 元素中可以存储字符串、数字甚至变量。
  • 元素索引顺序从0开始。 例如 name_list[0] 就是‘alex'

  1. 创建列表

 name_list = ['alex', 'seven', 'eric']

name_list = list(['alex', 'seven', 'eric'])

 2、索引

 names = ['Alex',"Tenglan",'Eric']
>>> names[0]
'Alex'
>>> names[2]
'Eric'
>>> names[-1] # "-1"表示最后一个
'Eric'
>>> names[-2] # 还可以倒着取
'Tenglan'

  3、切片

 >>> names = ["Alex","Tenglan","Eric","Rain","Tom","Amy"]
>>> names[1:4] #取下标1至下标4之间的数字,包括1,不包括4
['Tenglan', 'Eric', 'Rain']
>>> names[1:-1] #取下标1至-1的值,不包括-1
['Tenglan', 'Eric', 'Rain', 'Tom']
>>> names[0:3]
['Alex', 'Tenglan', 'Eric']
>>> names[:3] #如果是从头开始取,0可以忽略,跟上句效果一样
['Alex', 'Tenglan', 'Eric']
>>> names[3:] #如果想取最后一个,必须不能写-1,只能这么写
['Rain', 'Tom', 'Amy']
>>> names[3:-1] #这样-1就不会被包含了
['Rain', 'Tom']
>>> names[0::2] #后面的2是代表,每隔一个元素,就取一个
['Alex', 'Eric', 'Tom']
>>> names[::2] #和上句效果一样
['Alex', 'Eric', 'Tom']
>>> names[0:2][0:1] #切片的基础上再次切片
['Alex']

  4、追加

 >>> names
['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy']
>>> names.append("我是新来的")
>>> names
['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']

  5、删除

 >>> del names[2]
>>> names
['Alex', 'Tenglan', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
>>> del names[4]
>>> names
['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
>>>
>>> names.remove("Eric") #删除指定元素
>>> names
['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', '我是新来的']
>>> names.pop() #删除列表最后一个值
'我是新来的'
>>> names
['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
##### 批量删除
name = [9,9,9,9,34,5,6,7,34,34,9,9]
for i in range(name.count(34)):
name.remove(34)
print(name)
#输出
[9, 9, 9, 9, 5, 6, 7, 9, 9]

  6、插入

 >>> names
['Alex', 'Tenglan', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的']
>>> names.insert(2,"强行从Eric前面插入")
>>> names
['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', 'Tom', 'Amy', '我是新来的'] >>> names.insert(5,"从eric后面插入试试新姿势")
>>> names
['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']

  7、修改 

 >>> names
['Alex', 'Tenglan', '强行从Eric前面插入', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
>>> names[2] = "该换人了"
>>> names
['Alex', 'Tenglan', '该换人了', 'Eric', 'Rain', '从eric后面插入试试新姿势', 'Tom', 'Amy', '我是新来的']
##### 批量修改
name = [9,9,9,9,34,5,6,7,34,34,9,9]
for i in range(name.count(9)):
index = name.index(9)
name[index] = 9999
print(name)
# 输出
[9999, 9999, 9999, 9999, 34, 5, 6, 7, 34, 34, 9999, 9999]

  8、扩展

 >>> names
['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy']
>>> b = [1,2,3]
>>> names.extend(b)
>>> names
['Alex', 'Tenglan', 'Rain', 'Tom', 'Amy', 1, 2, 3]

  9、copy

 import copy
name = ["xx","xx","chh",[1,2,3,4],"hzh","cx","tongcf","zhangjie"]
name3 = name.copy() # 浅拷贝,只拷贝第二层嵌套列表的内存地址
name4 = copy.deepcopy(name) # 深拷贝,拷贝第二层嵌套列表的真实信息
name[3][1] = 4444
print("name:",name)
print("name3:",name3)
print("name4:",name4)
#输出
name: ['xx', 'xx', 'chh', [1, 4444, 3, 4], 'hzh', 'cx', 'tongcf', 'zhangjie']
name3: ['xx', 'xx', 'chh', [1, 4444, 3, 4], 'hzh', 'cx', 'tongcf', 'zhangjie']
name4: ['xx', 'xx', 'chh', [1, 2, 3, 4], 'hzh', 'cx', 'tongcf', 'zhangjie']

  10、统计

 >>> names
['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
>>> names.count("Amy")
2

  11、排序和翻转

 >>> names
['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
>>> names.sort() #排序
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: int() < str() #3.0里不同数据类型不能放在一起排序了,擦
>>> names[-3] = ''
>>> names[-2] = ''
>>> names[-1] = ''
>>> names
['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '', '', '']
>>> names.sort()
>>> names
['', '', '', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom'] >>> names.reverse() #反转
>>> names
['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '', '', '']

  12、获取下标

 >>> names
['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '', '', '']
>>> names.index("Amy")
2 #只返回找到的第一个下标

  13、enumrate(为可迭代的对象添加序号)

 li = [11,22,33]
for k,v in enumerate(li, 1):
print(k,v) # 输出
1 11
2 22
3 33

二、元组

  1、元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表。它只有2个方法,一个是count,一个是index,完毕。

 names = ("alex","jack","eric")
上一篇:[总结]FFMPEG视音频编解码零基础学习方法--转


下一篇:xfce terminal tab被解释为super+tab的bug