列表元祖

列表

列表常用功能  可以通过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
原文地址:https://www.cnblogs.com/xiaobaozi-95/p/8718510.html