python集合
list&tuple
list和tuple都是有序集合,list是可变对象,tuple是不可变对象
list(可变对象)特点:
- 查找和插入的时间随着元素的增加而增加(缺点);
- 占用空间小,浪费内存很少(优点)
1 # -*-coding:utf8 -*- 2 3 #定义list 4 humans = ['Lily','Sherry','Mami'] 5 #获取list的元素个数 6 humans_len = len(humans) 7 #list要用humans[-1]来表示索引最后一个元素,避免越界报错 8 print(humans_len,humans[-1]) 9 #增 10 humans.append('me') 11 #删 12 humans.pop(-1) 13 #改 14 humans[-2] = 'Marly' 15 #元素类型不限,list里面还可以有list,形成2维数组,3维数组
tuple(不可变对象)特点:
- 只有查找功能,并且查找的时间随着元素的增加而增加(缺点);
- 占用空间小,浪费内存很少(优点)
1 # -*-coding:utf8 -*- 2 3 #tuple的写法 4 t = (1,) 5 t1 = (2,3,)
#元组加,号是为了和函数方法区分 6 #‘可变的’tuple(里面包含list,list是可变的) 7 #可变的其实是list,tuple建立里面的其中一个元素是指向list是不变的 8 #全局变量l2 9 list1 = [1, 2, 3, 4, 5, 6] 10 11 #建立一个循环函数,来进行多次验证,可变和不可变的不同(也叫方法吧,随便了) 12 def tuple_run_times(times_): 13 for x in range(times_): 14 list1 = [x,2] 15 #把list1赋予给list2 16 list2 = list1 17 #改变list1 18 list1.pop(1) 19 print('list1的值 = '+str(list1)) 20 #改变list1值的同时,也改变了list2的值 21 print('list2的值 = '+str(list2)) 22 #为什么list2会跟着list1改变呢,我们打印id值看看,是相同的!这就是可变对象 23 print('tuple1的list1的id是:'+str(id(list1))) 24 print('tuple1的list2的id是:'+str(id(list2))) 25 print()
#------------------------------------------------------------------- 26 t1 = (1,[1,2,3],list1,) 27 #把t1赋值给t2 28 t2 = t1 29 #改变t1 30 t1 = (1,[1,2,3],times_,) 31 #改变t1值的时候,并没有影响t2的值 32 print('tuple2的值 = '+str(t2)) 33 print('tuple1的值 = '+str(t1)) 34 #t2并没有跟着t1改变而改变,我们打印id值看看,是不同的!这就是不可变对象 35 print('tuple2的id是:'+str(id(t2))) 36 print('tuple1的id是:'+str(id(t1))) 37 print("_________________________________________________") 38 tuple_run_times(5) 39 #打印全局变量list1 40 print('list1 = ' + str(list1))