一组有序项目的集合 可变的数据类型【可进行增删改查】 列表中可以包含任何数据类型,也可包含另一个列表【可任意组合嵌套】 列表是以方括号“[]”包围的数据集合,不同成员以“,”分隔 列表可通过序号访问其中成员
定义
>>> l = [] #空列表 >>> l = [1,2,3] >>> l = [1,2,3,[\'a\',\'b\']] >>> l = list(\'linuxeye\') >>> l [\'l\', \'i\', \'n\', \'u\', \'x\', \'e\', \'y\', \'e\'] >>> l = list(range(5)) >>> l [0, 1, 2, 3, 4] >>> l = \'1;2;3;4;5\'.split(\';\') >>> l [\'1\', \'2\', \'3\', \'4\', \'5\']
内建函数list(a_sequence) 可以将一个序列转为列表
索引
正索引是编号是从左到右,0开始;负索引编号是从右往左,-1、-2 …;取范围值都是从左至右
>>> LanguageList = [\'Python\',\'Shell\',\'Perl\',\'PHP\',\'java\',\'C\',\"C++\",\"Lisp\"]
>>> LanguageList[0] #取第一个值
\'Python\'
>>> LanguageList[3] #第四个值
\'PHP\'
>>> LanguageList[3:]
[\'PHP\', \'java\', \'C\', \'C++\', \'Lisp\']
>>> LanguageList[:3]
[\'Python\', \'Shell\', \'Perl\']
>>> LanguageList[2:5]
[\'Perl\', \'PHP\', \'java\']
>>> LanguageList[-1] #倒数第一个值 \'Lisp\' >>> LanguageList[-2] #倒数第二个值 \'C++\' >>> LanguageList[-5:] [\'PHP\', \'java\', \'C\', \'C++\', \'Lisp\'] >>> LanguageList[-5:-2] [\'PHP\', \'java\', \'C\'] >>> LanguageList[:-2] [\'Python\', \'Shell\', \'Perl\', \'PHP\', \'java\', \'C\']
增加元素
>>> LanguageList [\'Python\', \'Shell\', \'Perl\', \'PHP\', \'java\', \'C\', \'C++\', \'Lisp\'] >>> LanguageList.append(\'GO\') >>> LanguageList [\'Python\', \'Shell\', \'Perl\', \'PHP\', \'java\', \'C\', \'C++\', \'Lisp\', \'GO\'] >>> LanguageList.insert(3,\'Python\') #往PHP元素前插入 >>> LanguageList [\'Python\', \'Shell\', \'Perl\', \'Python\', \'PHP\', \'java\', \'C\', \'C++\', \'Lisp\', \'GO\'] >>> LanguageList.extend([\'Ruby\',\'C#\']) >>> LanguageList [\'Python\', \'Shell\', \'Perl\', \'Python\', \'PHP\', \'java\', \'C\', \'C++\', \'Lisp\', \'GO\', \'Ruby\', \'C#\']
搜索
>>> LanguageList = [\'Python\', \'Shell\', \'Perl\', \'Python\', \'PHP\', \'java\', \'C\', \'C++\', \'Lisp\', \'GO\', \'Ruby\', \'C#\'] >>> LanguageList.index(\'Python\') 0 >>> LanguageList.index(\'C\') 6 >>> LanguageList.index(\'c\') Traceback (most recent call last): File \"\", line 1, in ValueError: list.index(x): x not in list >>> \'c\' in LanguageList False >>> LanguageList.index(\'Python\') #统计一个元素的出现次数 2
删除元素
>>> LanguageList = [\'Python\', \'Shell\', \'Perl\', \'Python\', \'PHP\', \'java\', \'C\', \'C++\', \'Lisp\', \'GO\', \'Ruby\', \'C#\'] >>> LanguageList.remove(\'C\') >>> LanguageList.remove(\'Python\') >>> LanguageList.remove(\'c\') Traceback (most recent call last): File \"\", line 1, in ValueError: list.remove(x): x not in list >>> LanguageList.pop() \'C#\' >>> LanguageList [\'Shell\', \'Perl\', \'Python\', \'PHP\', \'java\', \'C++\', \'Lisp\', \'GO\', \'Ruby\'] >>> LanguageList.pop(-2) [\'Shell\', \'Perl\', \'Python\', \'PHP\', \'java\', \'C++\', \'Lisp\', \'Ruby\'] >>> del LanguageList[-3:-1] >>> LanguageList [\'Shell\', \'Perl\', \'Python\', \'PHP\', \'java\', \'Ruby\']
remove从列表中只删除一个值的首次出现。
pop会做两件事: 删除列表的最后一个元素, 然后返回删除元素的值。
修改元素
>>> LanguageList = [\'Python\',\'Shell\', \'Perl\', \'Python\', \'PHP\', \'java\', \'Ruby\'] >>> LanguageList[-2] = \'C\' >>> LanguageList [\'Python\', \'Shell\', \'Perl\', \'Python\', \'PHP\', \'C\', \'Ruby\'] >>> LanguageList[LanguageList.index(\'C\')] = \'JAVA\' >>> LanguageList [\'Python\', \'Shell\', \'Perl\', \'Python\', \'PHP\', \'JAVA\', \'Ruby\']
运算符
>>> LanguageList [\'Shell\', \'Perl\', \'Python\', \'PHP\', \'java\', \'C++\', \'Lisp\', \'GO\', \'Ruby\'] >>> LanguageList = LanguageList + [\'Python\',\'C\'] >>> LanguageList [\'Shell\', \'Perl\', \'Python\', \'PHP\', \'java\', \'C++\', \'Lisp\', \'GO\', \'Ruby\', \'Python\', \'C\'] >>> LanguageList += [\'java\'] >>> LanguageList [\'Shell\', \'Perl\', \'Python\', \'PHP\', \'java\', \'C++\', \'Lisp\', \'GO\', \'Ruby\', \'Python\', \'C\', \'java\'] >>> NumList = [1,2,3] * 3 >>> NumList [1, 2, 3, 1, 2, 3, 1, 2, 3]
排序
>>> NumList = [2,5,3,6,1,4] >>> NumList.reverse() >>> NumList [4, 1, 6, 3, 5, 2] >>> NumList[::-1] #和reverse效果相同 >>> NumList [2, 5, 3, 6, 1, 4] >>> NumList.sort() >>> NumList [1, 2, 3, 4, 5, 6]
sort可接受参数
cmp,比较函数,接受两个参数,小于时返回负,大于返回正,相等返回0 key,指定排序键 reverse,指定是否反序
列表的比较操作 , 隐式调用cmp方法 , 比较规则是逐个扫描元素进行比较, 如果可以比较 , 则比较, 如果相等扫描下一个元素 , 如果不相等返回结果 , 如果两个元素类型不可以比较 , 就比较两个对象的 id()值。如果一直相等 ,直到一个列表扫描结束 , 那么返回较长的列表较大
>>> L = [(13,54),(11,59),(15,55),(12,57),(10,56)] >>> L.sort(key=lambda x:x[1]) >>> L [(13, 54), (15, 55), (10, 56), (12, 57), (11, 59)] >>> L.sort(key=lambda x:x[1],reverse=1) #或者reverse=True >>> L [(11, 59), (12, 57), (10, 56), (15, 55), (13, 54)]
sort与sorted函数区别
NumList = [2, 5, 3, 6, 1, 4] >>> sorted(NumList) [1, 2, 3, 4, 5, 6] >>> NumList [2, 5, 3, 6, 1, 4] >>> NumList.sort() >>> NumList [1, 2, 3, 4, 5, 6]
sort: 在原list上排序,不返回排序后的list
sorted: 不改变原list,返回排序后的list