python数据类型二

list 列表,可变的数据类型

列表和字符串一样也拥有索引

 1 lst = ['动态','1','静态','编译','脚本']
 2 获取列表中元素索引位置
 3 s = lst.index('编译')
 4 print(s)
 5 结果
 6 3
 7 
 8 根据列表索引取元素
 9 print(lst[0])
10 结果
11 动态
12 
13 列表切片
14 print(lst[0:3])         #打印第0到第3个元素
15 print(lst[:4:2])        #打印第0到第4个元素,步长为2
16 print(lst[:-5:-1])      #-1倒序打印
17 结果
18 ['动态', '1', '静态']
19 ['动态', '静态']
20 ['脚本', '编译', '静态', '1']


 1 .append(要追加的元素) 追加
 2 lst = ['a','b','c']
 3 lst.append(8)
 4 print(lst)
 5 结果
 6 ['a', 'b', 'c', 8]
 7 
 8 .insert('要插入的位置(索引)',要插入的内容) 插入
 9 lst.insert(2,True)
10 print(lst)
11 结果
12 ['a', 'b', True, 'c']
13 
14 .extend() 扩展,迭代添加(把传递进去的参数进行迭代)
15 lst.extend('bob')
16 print(lst)
17 结果
18 ['a', 'b', 'c', 'b', 'o', 'b']
19 去除迭代添加
20 lst = ['a','b','c']
21 lst.extend(['bob'])
22 print(lst)
23 结果
24 ['a', 'b', 'c', 'bob']

 1 lst = ['bob',1,2,'bob',3,4,True,'bob']
 2 
 3 .remove() 移除(删除指定的元素,只能指定一个删除,一次只能删除一个)
 4 lst.remove('bob')
 5 print(lst)
 6 结果
 7 [1, 2, 'bob', 3, 4, True, 'bob']
 8 
 9 .pop() 弹出,默认删除最后一个,可以指定下标删除元素
10 .pop() 有返回值,返回的就是被删除的元素
11 s = lst.pop()
12 print(s)
13 print(lst)
14 结果
15 bob
16 ['bob', 1, 2, 'bob', 3, 4, True]
17 事例二
18 lst = ['bob',1,2,'bob',3,4,True,'bob']
19 s = lst.pop(1)
20 print(s)
21 print(lst)
22 结果
23 1
24 ['bob', 2, 'bob', 3, 4, True, 'bob']
25 
26 .clear() 清空
27 lst.clear()
28 print(lst)
29 结果
30 []
31 
32 del 通过下标删除对应的元素
33 del lst[-2]
34 print(lst)
35 结果
36 ['bob', 1, 2, 'bob', 3, 4, 'bob']
37 
38 删除整个列表(报错,因为列表被删除,找不到此列表)
39 del lst
40 print(lst)

 1 通过指定列表元素下标更改元素
 2 lst = ['bob',1,2,'jrey',3,4,True,'alex']
 3 lst[3] = 'tom'  
 4 print(lst)
 5 
 6 列表切片修改元素
 7 lst = ['bob',1,2,'jrey',3,4,True,'alex']
 8 lst[0:5] = 'tom','jk'
 9 print(lst)
10 结果
11 ['tom', 'jk', 4, True, 'alex']
12 13 lst[0:5] = ['tom']
14 print(lst)
15 结果
16 ['tom', 4, True, 'alex']
17 
18 如果步长不是1,元素的个数必须要和切片的个数一致(坑)
19 lst = ['bob',1,2,'jrey',3,4,True,'alex']
20 lst[1:5:2] = ['tom','jack'] #如果这里是一个元素就会报错
21 print(lst)
22 
23 事例
24 lst = ['bob',1,2,'jrey',3,4,True,'alex']
25 lst[3] = lst[3].upper()
26 print(lst)
27 结果
28 ['bob', 1, 2, 'JREY', 3, 4, True, 'alex']

1 通过元素下标查询
2 print(lst[3])
3 
4 for循环查询
5 for i in lst:
6     print(i)

列表嵌套
一层列表叫做一维列表
二层列表叫做二维列表
三层列表叫做三维列表

 1 lst = [1,2,3,'alex','wusir',True,False,[5,6,7,'jack',[18,'山谷','爱好',['可口可乐']]]]
 2 lst1 = lst[7] 等于 [5,6,7,'jack',[18,'山谷','爱好',['可口可乐']]]
 3 lst2 = lst1[-1] 等于 [18,'山谷','爱好',['可口可乐']]
 4 lst3 = lst2[-1] 等于 ['可口可乐']
 5 lst4 = lst3[0] 等于 可口可乐
 6 lst[7][-1][-1] 等于 ['可口可乐']
 7 print(lst[7][-1][-1][0]) 等于 可口可乐
 8 print(lst[7][4][-3:-1]) 等于 ['山谷','爱好']
 9 
10 追加列表中的元素
11 lst = [1,'大白','jack',['麻花疼',['可口可乐'],'王健林']]
12 lst[-1][-2].append('雪碧')
13 print(lst)
14 结果
15 [1, '大白', 'jack', ['麻花疼', ['可口可乐', '雪碧'], '王健林']]

练习题:

 1 lis = [2, 4, "k", ["qwe", 20, ["k1", ["tt", 3, "1"]], 89], "ab", "adv"]
 2 将列表lis中的"tt"变成大写(用两种方式)
 3 lis[3][2][1][0] = lis[3][2][1][0].upper()       #方法一,找到tt,用字符串操作符upper来改变列表中值的大小
 4 lis[3][2][1][0] = 'TT'                          #方法二改变列表中的值
 5 print(lis)
 6 将列表中的数字3变成字符串"100"(用两种方式)
 7 lis[3][2][1][1] = '100'                         #方法一,直接找到列表中的值,将其改变
 8 lis[3][2][1][1] = str(lis[3][2][1][1] + 97)     #方法二,用运算方法改变列表中的值
 9 print(lis)
10 将列表中的字符串"1"变成数字101(用两种方式)
11 lis[3][2][1][-1] = int(lis[3][2][1][-1]) + 100  #方法一
12 print(lis)
13 
14 lis[3][2][1][-1] = 101                        #方法二
15 print(lis)

列表其他操作

 1 列表相乘
 2 lst = [1,2,3]
 3 print(lst * 3)
 4 结果
 5 [1, 2, 3, 1, 2, 3, 1, 2, 3]
 6 
 7 列表合并
 8 lst = [1,2,3]
 9 lst1 = [6,7,8,'a']
10 print(lst + lst1)
11 结果
12 [1, 2, 3, 6, 7, 8, 'a']
13 
14 lst = [1,2,6,7,89,54,2,4,53,34,4,3]
15 查看列表中的元素个数
16 print(len(lst))
17 结果
18 12
19 
20 统计指定字符串个数
21 s = lst.count(3)
22 print(s)
23 结果
24 2
25 
26 排序,默认升序(从小到大)
27 lst.sort()
28 print(lst)
29 结果
30 [1, 2, 2, 3, 4, 4, 6, 7, 34, 53, 54, 89]
31 
32 降序(从大到小)
33 lst.sort(reverse=True)
34 print(lst)
35 
36 反转列表
37 lst.reverse()
38 print(lst)
39 结果
40 [3, 4, 34, 53, 4, 2, 54, 89, 7, 6, 2, 1]
41 
42 按照ASCII字母排序
43 lst1 = ['abex','baobao','dj','6','gg','hg','admin','baobao']
44 lst1.sort()
45 print(lst1)
46 结果
47 ['6', 'abex', 'admin', 'baobao', 'baobao', 'dj', 'gg', 'hg']

 tuple  元组

不可变的数据类型,有序,是一个不可以修改的列表,只能查看,可以for循环,可以切片,可以嵌套

  1 元组的方法:
  2     count  统计
  3     index  索引
  4 
  5 元组索引和切片
  6 tu = ('bob',4,'tom',8,'jack')
  7 print(tu[2])
  8 print(tu[2:4])
  9 print(tu[::2])
 10 结果
 11 tom
 12 ('tom', 8)
 13 ('bob', 'tom', 'jack')
 14 
 15 合并元组
 16 tu = (1,2,3)
 17 tu1 = (5,) + tu
 18 print(tu*2)
 19 print(tu1)
 20 结果
 21 (1, 2, 3, 1, 2, 3)
 22 (5, 1, 2, 3)
 23 
 24 元组索引
 25 tu = (1,2,3,4,5,4,3,4,)
 26 print(tu.index(3))      #第一个值的索引位置
 27 print(tu.count(4))      #统计4在元组中有多少个
 28 print(tu[:4])           #切片打印元组中前4个值
 29 结果
 30 2
 31 3
 32 (1, 2, 3, 4)
 33 
 34 循环元组
 35 for i in tu:
 36     print(i)
 37 结果
 38 1
 39 2
 40 3
 41 
 42 生成元组
 43 tu = 1,2,3
 44 print(tu,type(tu))
 45 结果
 46 (1, 2, 3) <class 'tuple'>
 47 
 48 列表转元组
 49 l = ['a','b','c']
 50 tu = tuple(l)
 51 print(tu,type(tu))
 52 结果
 53 ('a', 'b', 'c') <class 'tuple'>
 54 
 55 反转元组
 56 t = (1,2,1,3,4)
 57 print(t[::-1])
 58 
 59 获取元组长度
 60 print(len(t))
 61 
 62 获取元组中最大的元素
 63 print(max(t))
 64 获取元组中最小的元素
 65 print(min(t))
 66 结果
 67 (4, 3, 1, 2, 1)
 68 5
 69 4
 70 1
 71 
 72 比较两个元组 ==\!=\>\<
 73 print((1,2) < (3,4))
 74 结果
 75 True
 76 
 77 判定某元素是否在这个元组中 in或not in
 78 t = ('a','b','c')
 79 print('a' not in t)
 80 结果
 81 False
 82 
 83 拆包
 84 a,b = (1,2)
 85 print(a,b)
 86 结果
 87 1 2
 88 
 89 a = 1
 90 b = 2
 91 a,b = (b,a)
 92 print(a,b)
 93 结果
 94 2 1
 95 
 96 元组嵌套
 97 tu = (1,2,3,'a',False,[4,5,6],(8,7,9))
 98 print(id(tu[-2]))
 99 tu[-2].append(7)    #元组没改,改的是元素内部,没有改变元组的指向,不报错
100 print(tu)
101 print(id(tu[-2]))
102 print(tu[6][-3:-1])
103 结果
104 2498382337224
105 (1, 2, 3, 'a', False, [4, 5, 6, 7], (8, 7, 9))
106 2498382337224
107 (8, 7)
108 注意:由此得出元组只要定义,在元组中的任何操作都不改变元组创建的内存地址

元组面试题(坑)

 1 空元组定义
 2 tu = tuple()
 3 print(type(tu))
 4 
 5 tu = (1,)       #有逗号就是tuple类型
 6 print(type(tu))
 7 tu = (1)        #少一个逗号就是int类型
 8 print(type(tu))
 9 结果
10 <class 'tuple'>
11 <class 'int'>
12 
13 只要是用[]都是列表list
14 lst = [1]
15 print(type(lst))
16 结果
17 <class 'list'>

id()  查看数据类型内存地址

1 print(id(a))
2 #字符串和数字是不可变的数据类型

 range     #可以指定范围,类似于切片

1 切片与range格式对比:
2 [起始:终止:步长]      #切片这么写
3 range(起始位置,终止位置,步长)
4 区别:
5 # python2.x
6     range()   列表
7     xrange()  生成器
8 # python3.x
9     range() 可迭代的,既不是生成器也不是迭代器

事例:

 1 range(起始参数,终止参数,步长)
 2 
 3 起始位置不写默认为0
 4 print(range(5))
 5 结果
 6 range(0, 5)
 7 
 8 打印10到0,-1为降序打印
 9 print(list(range(10,0,-1)))
10 结果
11 [10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
12 
13 range获取的这个区间是可迭代的
14 for i in range(6):
15     print(i)
16 结果
17 0
18 1
19 2
20 3
21 4
22 5
23 
24 使用for循环和range打印10到0之间的所有偶数(步长为2)
25 for i in range(10,-1,-2):
26     print(i)
27 结果
28 10
29 8
30 6
31 4
32 2
33 0
34 
35 lst = ['a','b','c']
36 for i in range(len(lst)): #i就是索引 lst[i]元素
37     print(i, lst[i])
38 结果
39 0 a
40 1 b
41 2 c

 

posted @ 2018-10-26 21:14  LinuxCBB  阅读(252)  评论(0编辑  收藏  举报