python基础(5)-列表+元组

python的列表我觉得是真的六,为什么呢?你说它是C的数组吧,但是比C的数组可是真的灵活多了,因为列表可以包含不同的元素组成一个列表;

一、列表的创建:

列表的创建有两种方法:

1、直接创建用[]:

num=[1,2,3,4,5,6,7]

name=[1,"2",3.0]#可以看出列表的内容完全可以不同的

2、使用list函数创建:

说实话list函数你可以把它看做是一种创建,也可以把它看成是一种类型转换,也就是说,什么都可以转换成为列表,如下:

#将字符串转换成列表

list1 = list("hello")

print(list1)

#将元组转换成列表

tuple1 = ('Python', 'Java', 'C++', 'JavaScript')

list2 = list(tuple1)

print(list2)

#将字典转换成列表

dict1 = {'a':100, 'b':42, 'c':9}

list3 = list(dict1)print(list3)

#将区间转换成列表

range1 = range(1, 6)

list4 = list(range1)print(list4)

运行结果:

['h', 'e', 'l', 'l', 'o']

['Python', 'Java', 'C++', 'JavaScript']

['a', 'b', 'c']#字典转化成列表则是将索引变成了列表

[1, 2, 3, 4, 5] #range是左闭右开

二、删除一个列表

intlist=[1,45,8,34]

del intlist

所以说删除一个列表很简单,就是直接删除它就可以了

三、列表增加一个元素

三种方法,一一列举太麻烦,所以我直接上代码的比较简单:

tmp1 = {'a':2,'b':3}

list_tmp = [5,6,7]

#第一种方法,调用append会把tmp1作为整个字典元素插入到list_tmp的最后面

list_tmp.append(tmp1)

print(list_tmp)

#第二种方法,调用extend会把tmp1的元素拆分成元素插入到list_tmp的最后面,按照上述所说,插入的是“a”,"b";

list_tmp.extend(tmp1)

print(list_tmp)

#第三种方法,调用insert会把tmp1作为整个字典元素插入到list_tmp的最后面

list_tmp.insert(6,tmp1)

print(list_tmp)

运行结果:

[5, 6, 7, {'a': 2, 'b': 3}]

[5, 6, 7, {'a': 2, 'b': 3}, 'a', 'b']

[5, 6, 7, {'a': 2, 'b': 3}, 'a', 'b', {'a': 2, 'b': 3}]

这里面有个坑,就是你不能用insert(-1,xxx)来代表你要插入到最尾,虽然list_tmp[-1]代表的是最后一个列表的元素;如果insert是-1的话,那么插入的是倒数第二个字段;

四、列表删除一个元素

列表删除一个元素有三种方法,也可以理解为3+1,那个1是clear,调用clear会把列表中所有的元素都清除,不过讲到这里,我要说一句很关键的总结性的话,那就是无论是什么样的增删改查,凡是调用的内置函数,比如说,sorted,reversed,或是什么,都是临时的;但是如果是list.式的调用,那可是永久的;后面会讲到;

1、del list[2]#删除第三个元素

2、list.pop(2)#函数删除第三个元素,类似于弹栈的方式

3、list.remove('b')#remove就是可以根据列表的内容进行删除

3、list.clear()#把所有的东西都删除了,变成了一个空的列表

五、列表修改一个元素

修改就更简单了;list[2] = 10;即可;当然也可以用分片的方式:list[2:4:2] = [7,8],具体什么含义你懂得,就是从第三个元素到第5个元素,每隔一个进行一次修改,那么第三个变成了7,第5个变成了8,就是这样的

六、查找列表一个元素

查找一个元素有两种方法,一个是查找位置,一个是查找个数:

1、查找位置

index函数

nums=[40,36,89,2,36,100,7,-20.5,-999]

nums.index (100,4,7)#查找的是100这个元素,从第5个位置,然后查到第8个位置

nums.index(4,7)#查找的是4这个元素,从第8个位置往后

nums.index(100)#查找的是100这个元素,查找的是整个列表

count函数

num.count(100)#查找100出现的次数

七、列表进行排序

那么由上面所述,排序的话,有两种方式:

1、永久排序

list.sort()

2、非永久排序

sorted(list)

八、列表的倒序

那么由上面所述,倒序的话,有两种方式:

1、永久倒序

list.reverse()

2、非永久倒序

reversed(list)

九、列表的循环访问

1、for tmp in list

2、for i in range(1,len(list))

第一种方法,tmp是list的元素,我们遍历的话就会是tmp去当做list中的每一个的元素;第二种方法,得到list的长度,那么i的话,就会是在这个长度里,也就是说,i就是代表的是索引,用i作为角标的话,可以得到list中的元素----->list[i]

十、列表的复制

只要提到复制,那就要讲一讲就是什么是深拷贝,什么是浅拷贝

先说浅拷贝,浅拷贝就是个软连接,就好像是你给它又起了个名字,或者说是个小名;你让这个小名的变量去做一件事,就意味着你让这个大名的变量去做同样的一件事,没有毛病;

那么深拷贝就不一样了;深拷贝就是好比你克隆了一个人,那么就是两个人了;你让真人去打球,那么克隆人完全可以去游泳

所以,有了以下的分类:

1、深拷贝

1)list2 = list1[:]

2)list2 = copy.deepcopy(list1)

这种是深拷贝,深拷贝的话,就是你可以遍历了整个list,或者比如说哈,list2 = list1[2:4],这种分片肯定是深拷贝把,所以list1[:]也是一样的

2、浅拷贝

1)list2 = list1

2)list2 = copy.copy(list1)

这就是浅拷贝了,list2只是list1的小名,你让list2去做什么,list1就做什么,反之也是一样的;这就解释了为什么说,对于python来说,一个变量初始化,未必就给它开辟了真正得到内存;比如说list2,当然名字的保存是肯定开辟内存的,我们说的是列表的内存;

十一、元组

元组其实你可以看做是不能更改的列表,即a = (1,2,3);在创建的时候,就已经注定了a作为元组,里面的元素是无法进行更改的;所以,没有改和删和增等一系列的操作;但是元组有以下的创建方法(除了直接赋值括号这种)

list1 = [1,2,3,4,5,6,7,8,9,0]

tmp3 = tuple(list1)

list1.append(11)

print(list1)

print (tmp3)

这种就是把列表改为了一个元组,我之所以还加了一句list1.append,事项告诉的是,list1在被tuple函数修饰了以后,改变的不是list1,而是tmp3,list1还是可以继续添加元素的;就是这样简单;

至于元组的循环访问,和列表是一样的,这里没有必要再重复一遍;

然后对于元组的删除,可以用del tmp1即可;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。