列表(List)
python中用方括号 [ ] 表示一个list,方括号里面可以是各种数据类型。
>>> a=[1,'q',True] >>> type(a) <type 'list'>
1)列表也有类似字符串一样的索引和切片,方法一样
>>> a=[1,23,2] >>> a[0] 1 >>> a.index(1) 0
2)反转:字符串倒过来。
反转,不是在“原地”把原来的值倒过来,而是新生成了一个值,那个值跟原来的值相比,是倒过来了,原来的值还存在于变量中
反转有两种方式:
>>> a=[1,23,2] >>> a[::-1] #方式一 [2, 23, 1] >>>a [1,23,2] >>> list(reversed(a)) #方式二 [2, 23, 1]
3)基础操作
>>> a.append("like") #增加列表元素,追加到尾部 >>> a [1, 23, 2, 'like'] >>> b=['q', 'w'] >>> a.extend(b) #b中的所有元素加入到a中 >>> a [1, 2, 3, 'q', 'w'] >>> b ['q', 'w'] >>> a = "python" >>> hasattr(a,'__iter__') False >>>b = [1,2] >>> hasattr(b,'__iter__') True #hasattr()判断一个字符串是否是可迭代的,是返回True,否返回False。其判断本质就是看该类型中是否有__iter__函数。用dir()查询整型、字符串、列表中,谁有__iter__。 >>> dir(str) ['__add__', '__class__', '__contains__', '__delattr__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__getslice__', '__gt__', '__hash__', '__init__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', '_formatter_field_name_split', '_formatter_parser', 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'index', 'isalnum', 'isalpha', 'isdigit', 'islower', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill'] >>> dir(list) ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__delslice__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getslice__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__setslice__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort'] #id()函数查看变量在内存的位置编码 >>> id(a) 140571421973464 >>> id(b) 140571377764352
4)insert(i, x)函数,含义是
将元素 x 插入到索引值是 i 的元素前面。索引值是从0开始的。
>>> a=['a','b','c','d'] >>> a.insert(2,'q') >>> a ['a', 'b', 'q', 'c', 'd'] >>> a.insert(9,'w') >>> a ['a', 'b', 'q', 'c', 'd', 'w']
注:当 i 的值大于 list 中的最大索引值时,元素 x 自动插入 list 末尾。
5)remove(x)函数,删除列表中的x元素。注:当列表中含有多个不紧邻的x元素时,只删除第一个x元素,若相邻的就一起删除
>>> a=['a', "a",'b', 'c', 'd', 'w'] >>> a.remove('a') >>> a ['a', 'b', 'c', 'd', 'w'] >>> a=['a','b','a', 'c', 'd', 'w'] >>> a.remove('a') >>> a ['b', 'a', 'c', 'd', 'w']
6)pop(i)函数,删除指定索引值 i 对应的元素,并将删除结果返回,若不写 i , 默认删除最后一个元素。
>>> a=['b', 'a', 'c', 'd', 'w'] >>> a.pop() 'w' >>> a ['b', 'a', 'c', 'd'] >>> a.pop(2) 'c'
7)reverse()函数,将列表反转,等同于 list[ : :-1]
>>> a=['a','b','c'] >>> a.reverse() >>> a ['c', 'b', 'a'] >>> a[::-1] ['a', 'b', 'c']
8)sort()函数,对原列表进行排序,语法:
list.sort(cmp=None, key=None, reverse=False) #python 2.x
list.sort( key=None, reverse=False) #python 3.x
key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。默认值None
reverse -- 排序规则,reverse = True 降序, reverse = False 升序(默认)。
>>> a=['qwe','rty','uiop'] >>> a.sort() >>> a ['qwe', 'rty', 'uiop'] >>> a.sort(key=len) >>> a ['qwe', 'rty', 'uiop'] >>> a.sort(key=len,reverse=True) >>> a ['uiop', 'qwe', 'rty'] >>> b=[45,5,7,3] >>> b.sort() >>> b [3, 5, 7, 45]
此外,还有一个内置函数sorted()用于排序
sorted(iterable, cmp=None, key=None, reverse=False) #python 2.x
sorted(iterable, key=None, reverse=False) #python 3.x
注:两函数的的区别是, sort( )函数时是在原列表上进行排序,无返回值;而sorted( )函数是返回一个新的list,不在原来的list上进行操作,调用其返回一个排好序的list。
>>> b [3, 5, 7, 45] >>> c=sorted(b) >>> c [3, 5, 7, 45]
9)split()函数,指定分隔符对字符串进行分割,分割后的字符串以逗号“,”隔开。
语法:str.split(str="", num=string.count(str))
- str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。
- num -- 分割次数。分隔出 num+1 个子字符串,默认为 -1, 即分隔所有。
>>> a="hello world to you" >>> a.split() ['hello', 'world', 'to', 'you'] >>> a 'hello world to you' >>> a.split(" ",1) ['hello', 'world to you'] >>> a.split(" ",2) ['hello', 'world', 'to you']
10)join() 函数用于将序列中的元素以指定的字符连接生成一个新的字符串。
语法:str.join(sequence)
str:指定字符 sequence:序列名
>>> a,b=(1,2,3,4,5),['a','b','c','d'] >>> "".join(b) 'abcd' >>> "".join(a) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: sequence item 0: expected string, int found >>> print(" ".join('%s' %id for id in a)) 1 2 3 4 5 >>> " ".join('%s' %id for id in a) '1 2 3 4 5'
注:若序列中元素包含数字,则join()会报错。需遍历序列中元素,将之转化成字符串。这样就能成功输出数字结果。
11)remove()函数,删除列表中的某个元素
>>> b=[1,2,3] >>> b.remove(2) >>> b [1, 3]
Python的序列类型:字符串、列表、元组