Python_Day1_人人都爱列表
列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或 所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。 鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如names)是个不错的主意。
列表非常适合利用顺序和位置定位某一元素,尤其是当元素的顺序或内容经常发生改变时。与字符串不同,列表是可变的。你可以直接对原始列表进行修改:添加新元素、删除 或覆盖已有元素。在列表中,具有相同值的元素允许出现多次。
1.1常用列表方法
#使用 dir(list) ,查看列表的内置方法:
>>> dir(list) ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
1.1.1 append
#向列表末尾追加一个元素 >>> numbers = [1,2,2,3,3,3] >>> numbers.append(4) >>> numbers [1, 2, 2, 3, 3, 3, 4]
1.1.2 clear
#清除一个列表中的所有元素 >>> n [1, 2, 3, 4, 5] >>> n.clear() >>> n []
1.1.3 copy
#复制一个列表 >>> n = [1,2,3,4,5] >>> n.copy() [1, 2, 3, 4, 5] >>> n.copy() [1, 2, 3, 4, 5] >>> num = n.copy() >>> num [1, 2, 3, 4, 5]
1.1.4 count
#计算某个元素在列表中出现的次数 >>> numbers [1, 2, 2, 3, 3, 3, 4] >>> numbers.count(1) 1 >>> numbers.count(2) 2 >>> numbers.count(3) 3 >>> numbers.count(4) 1
1.1.5 extend
#直接向列表末尾一次性追加另一个列表 >>> numbers [1, 2, 2, 3, 3, 3, 4] >>> a = [4,4,4] >>> numbers.extend(a) >>> numbers [1, 2, 2, 3, 3, 3, 4, 4, 4, 4] >>> a [4, 4, 4]
1.1.6 insert
#将对象插入列表中 >>> numbers [1, 2, 2, 3, 3, 3, 4, 4, 4, 4] >>> numbers.insert(0,0) >>> numbers [0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4]
1.1.7 pop
#移除列表中的最后一个元素,默认是最后一个 >>> numbers [0, 1, 2, 2, 3, 3, 3, 4, 4, 4, 4] >>> numbers.pop() 4 >>> numbers [0, 1, 2, 2, 3, 3, 3, 4, 4, 4]
1.1.8 remove
#默认移除列表中第一个匹配的元素 >>> num [1, 2, 1, 3, 2] >>> num.remove(1) >>> num [2, 1, 3, 2] >>> num.remove(2) >>> num [1, 3, 2]
1.1.9 reverse
#将列表中的元素反向存放 >>> numbers [0, 1, 2, 2, 3, 3, 3, 4, 4, 4] >>> numbers.reverse() >>> numbers [4, 4, 4, 3, 3, 3, 2, 2, 1, 0]
1.1.10 sort
######################################################### #对列表排序,这个我比较喜欢,里面挺多好玩的东西,下面做个简单的介绍# #########################################################
#默认排序 >>> L = [1,4,3,2] >>> L.sort() >>> L [1, 2, 3, 4] #自定义排序 #咱们先看看sort的使用方法 >>> L.sort.__doc__ 'L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*' #根据提供的key函数为元素产生一个键,列表的元素按照这个键值来排序 >>> x = ['abc','a','bc','abcd'] >>> x.sort(key=len) >>> x ['a', 'bc', 'abc', 'abcd’] #反向排序 >>> n = [3, 1, 2, 5] >>> n.sort(reverse=True) >>> n [5, 3, 2, 1]
1.2 其他的几个方法
1.2.1 in
#使用 in 判断值是否存在 #判断一个值是否存在于给定的列表中的许多方式,其中最具有 Python 风格的是使用 in: >>> num = [1, 2, 3] >>> 1 in num True >>> 5 in num False >>> #同一个值可能出现在列表的多个位置,但只要至少出现一次,in就会返回Ture >>> num = [1, 1, 2, 3] >>> 1 in num True
1.2.2 len()
#使用 len()获取长度 #len()可以返回列表长度 >>> num = [1, 2, 3] >>> len(num) 3 #对于汉字呢?是如何计算长度呢? >>> num = "菜鹌鹑2333" >>> len(num) 7 #so,你get到了吗?
1.2.3 “=” 和 “copy()”有啥不一样呢?
# “=” 是赋值 copy()是复制 #这个相信大家都知道,但是到底还有啥区别呢?往下看 >>> a = [1, 2, 3] >>> a [1, 2, 3] >>> b = a >>> b [1, 2, 3] >>> a[0] = '菜鹌鹑' >>> a ['菜鹌鹑', 2, 3] >>> b ['菜鹌鹑', 2, 3] #和软链接有点像哦,让我们看看他们的内存地址: >>> hex(id(a)) '0x1a93262c588' >>> >>> hex(id(b)) '0x1a93262c588' #我们发现,两个变量指向同一个对象。 #咱们再看看copy() >>> c = a.copy() >>> a [1, 2, 3] >>> c [1, 2, 3] >>> a[0] = '菜鹌鹑' >>> c [1, 2, 3] #没办法改变c列表了,再看看他们的内存地址 >>> hex(id(a)) '0x1a93262c588' >>> hex(id(c)) '0x1a93262ce08' #原来copy()生成了新的列表,已经指向两个不同的对象。 #除了copy(),还有其他方法生成新列表 ######## #list()# ######## >>> a = [1,2,3] >>> b = list(a) >>> b [1, 2, 3] >>> hex(id(a)) '0x2e78957c588' >>> hex(id(b)) '0x2e78957cfc8' ######### #列表切片# ######### >>> a = [1,2,3] >>> c = a[:] >>> c [1, 2, 3] >>> hex(id(c)) '0x2e78957c588' >>> hex(id(a)) '0x2e78957ce08'
版权声明:本文为quail2333原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。