列表
列表常用功能 可以通过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']
- 创建列表
>>> new_list = ['panda','pig','dog'] >>> new_list = list(['panda','pig','dog'])
- 索引
>> new_list[2] 'dog'
>> new_list[-1]
'dog' - 切片,分片
>> new_list[0:3] ['panda','pig','dog'] >>> l= [x for x in range(0,10,2)] >>> l [0, 2, 4, 6, 8] >>> l[0:3] [0, 2, 4] >>> l[::2] #设置步长 [0, 4, 8] >>> l[::-2] #步长可以是负数,改变方向 [8, 4, 0]
- 追加 一个元素
>>> new_list.append('cat') >>> new_list ['panda', 'pig', 'dog', 'cat']
- 扩展 添加一个列表进来
>>> l = ['aaa', 'bbb'] >>> l.extend(['ccc','ddd']) #extend([列表]) >>> l ['aaa', 'bbb', 'ccc', 'ddd'] >>> l.extend('efg') >>> l ['aaa', 'bbb', 'ccc', 'ddd', 'e', 'f', 'g']
- 插入
>>> new_list.insert(1,'rabbit') # 指定 索引 和 哪个元素 >>> new_list ['panda', 'rabbit', 'pig', 'dog', 'cat']
- 删除
>>> del new_list[1] # del语句 指定索引 >>> new_list ['panda', 'pig', 'dog', 'cat'] >>> new_list.remove('dog') #remove()方法 指定元素 >>> new_list ['panda', 'pig', 'cat'] >>> new_list.pop() #pop()方法 删除最后一个元素 'cat' >>> new_list ['panda', 'pig'] >>> new_list.pop(1) # pop()方法 指定索引 删除指定元素 'pig' >>> new_list ['panda']
判断用del还是pop:
如果要从列表中删除一个元素,且不再以任何方式使用它,就使用del语句;如果在删除元素后还能继续使用它,就使用方法pop
- 统计 count() 方法 指定元素
- 下标 index()方法 指定元素 l.index('a') l.index('a',1,10)范围
- 排序 sort() 方法 按字母排序 l.sort(reverse=True) 倒序
- 翻转 reverse()方法 按元素倒序
- 长度 len(list)
- 循环
# 遍历索引和元素 >>> test = [111,222,333] >>> for i in range(len(test)): ... print(i,test[i]) 0 111 1 222 2 333 # enumerate() >>> for index,item in enumerate(test): ... print(index,item) 0 111 1 222 2 333 >>> for index,item in enumerate(test,1): ... print(index,item) 1 111 2 222 3 333
-
拷贝 list2 = list1[:]
列表推导式
>>> d={'a':'11','b':'22','c':'33'} >>> [k+' '+v for k,v in d.items()] ['a 11', 'b 22', 'c 33'] #条件过滤 >>> [x*x for x in range(1,10) if x%2==0] [4, 16, 36, 64] >>> L = ['Hello', 'World', 12,'Apple',None] >>> [x.lower() for x in L if isinstance(x,str)] ['hello', 'world', 'apple'] 多层表达式 >>> [m + n for m in 'ABC' for n in '123'] ['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3'] #打印对称的三位数 print [100*x+10*y+z for x in range(1,10) for y in range(10) for z in range(10) if x==z]
元祖
特性 :元祖一旦创建便不可修改, 但是可以给存储元祖的变量重新赋值
创建元祖
>>> t = ('banana','apple','orange')
>>> t = tuple(('banana','apple','orange'))
注意:单个元素的元祖,在元素后要加一个逗号
>>> t=(1,) >>> type(t) <class 'tuple'>
>>> t=1, >>> type(t) <class 'tuple'>
元祖的元素不可被修改
元祖的元素的元素可以被修改
>>> t=(1,2,{'k1':'v1'})
>>> t[2] = 333
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'tuple' object does not support item assignment
>>> t[2]['k1']=333
>>> t
(1, 2, {'k1': 333})
tuple只有 count() index() 两个方法
>>> dir(tuple) ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'count', 'index']
常用操作有:
- 切片
>>> t=(1,2,3)>>> t=t[:2]+(4,)+t[2:] >>> t (1, 2, 4, 3)
- 索引 t[0]
- 循环
- 长度
- 删除 del t1