s = 'python' L = list(s) L ['p', 'y', 't', 'h', 'o', 'n']
l = ['p', 'y', 't', 'h', 'o', 'n'] l type(l) ['p', 'y', 't', 'h', 'o', 'n'] list
列表:有序的序列,因此每个数据都有惟一对应的索引值。
第一个元素对应的索引值是0,和字符串是同样的python
语法:列表[start:stop:step]app
Examples:设计
list1 = ['life', 'is', 'short', 'I', 'use', 'python'] list1[2] shortlist2= [1, 2, 3, 'Hello', [1, 2, [1, [1, '新中国', 3], 3], 4, 5] ] list2[4][2][1] [1, '新中国', 3]
经常使用的5种方法code
list.append(要添加元素) | 在列表末尾添加元素 |
---|---|
list.extend(要添加的元素) | 在列表末尾添加列表 |
list.insert(插入后的索引,插入的对象) | 在列表制定位置插入对象 |
Examples:htm
list1 = ['life', 'is', 'short'] list2 = ['I', 'use', 'python' ] list1.extend(list2) lsit1 ['life', 'is', 'short', 'I', 'use', 'python']list1 = ['life', 'is', 'I', 'use', 'python'] list1.insert(2,'short') lsit1 ['life', 'is', 'short', 'I', 'use', 'python']
del 列表名[要删除元素的索引值] | 删除对应索引的元素 |
---|---|
列表名.clear() | 清空列表全部元素 |
列表名.pop(要删除元素的索引值) | 默认删除最后一个,并返回这个被删除的元素。 |
列表名.remove(元素名) | 用于移除列表中某个值的第一个匹配项 |
in 和 not in | 判断元素存在否 |
---|---|
列表.index(寻找的对象,开始索引,结束索引) | 元素首次出现的索引 |
列表.count(寻找的对象) | 得到某个元素元素出现次数 |
Examples:对象
a=[1,'a', [2, 5]] 2 in a Falsea=['我','爱','北','京','天','安','门','天','安','门',] a.count("门") 2
reverse的英文意思是翻转,若是填写了reverse=True就意味着列表会降序排列blog
Examples:排序
list1 = [1, 9, 7, 6, 5, 8, 6, 8] list1.sort() list1 [1, 5, 6, 6, 7, 8, 8, 9] # 比较对象数据类型一致,不一样的数据类型之间没有某种维度上的大小比较
浅拷贝
浅拷贝只拷贝容器中元素的地址
浅拷贝是在另外一块地址中建立一个新的变量或容器,可是容器内的元素的地址均是源对象的元素的地址的拷贝。
也就是说新的容器中指向了旧的元素( 新瓶装旧酒 )这里新的容器能够是列表或字典等索引
深拷贝
深拷贝,彻底拷贝了一个副本,容器内部元素地址都不同(有特定要求)
对于元素为不可变类型,并无开辟新的地址
对于元素为可变类型 ,则从新开辟新的地址
小结:对于深拷贝,目的就是要建立一个玩玩全全独立的副本,就意味着全部的一切都应该在新的地址上。
一、对于列表或者字典自己,深拷贝结果下,地址是改变了的,也就是说瓶子是换新了的 。
二、全部可变类型的元素也是有了新的地址的。
三、对于不可变类型的元素,地址没有变,那岂不是相互有影响?不,若是你改变了不可变类型,就会在新的地址下储存新的数据了,也是没有影响的。
总之,底层设计的很是合理。
中间设计代码验证可参考Python基础入门—字典dict相关内容