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

一、列表

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

  1. 创建列表

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

   2、索引

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

   3、切片

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

   4、追加

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

   5、删除

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

  6、插入

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

  7、修改 

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

  8、扩展

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

  9、copy

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

  10、统计

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

  11、排序和翻转

 1 >>> names
 2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
 3 >>> names.sort() #排序
 4 Traceback (most recent call last):
 5   File "<stdin>", line 1, in <module>
 6 TypeError: unorderable types: int() < str()   #3.0里不同数据类型不能放在一起排序了,擦
 7 >>> names[-3] = '1'
 8 >>> names[-2] = '2'
 9 >>> names[-1] = '3'
10 >>> names
11 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
12 >>> names.sort()
13 >>> names
14 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']
15 
16 >>> names.reverse() #反转
17 >>> names
18 ['Tom', 'Tenglan', 'Amy', 'Amy', 'Alex', '3', '2', '1']

  12、获取下标

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

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

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

二、元组

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

1 names = ("alex","jack","eric")

 

原文地址:https://www.cnblogs.com/chhphjcpy/p/6062626.html