zoukankan      html  css  js  c++  java
  • Python基本数据类型之list

    一、创建列表:

    
    li = []
    li = list()
    name_list = ['alex', 'seven', 'eric']
    
    name_list = list(['alex', 'seven', 'eric'])
    
    

    二、基本操作:

    索引

    name_list = ["eirc","morra","tommy"]
    print(name_list[0])    #eirc
    print (name_list[2])     #'tommy'
    print (name_list[-1])    #'tommy'
    print (name_list[-2])    #'morra'
    print (name_list[1:])    #['morra', 'tommy']
    print(name_list.index('eirc'))     #输出eric的索引
    print(type(li[2]))        #<class 'str'>索引取出来后是元素的类型
    

    索引的特殊用法

    >>> li=[1,2,3,4,5,6,7,8]
    >>> li[::-1]        #倒叙
    [8, 7, 6, 5, 4, 3, 2, 1]
    >>> li[::-2]        #元素之间间隔2
    [8, 6, 4, 2]
    >>> li[::-3]
    [8, 5, 2]
    

    切片

    name_list = ["eirc","morra","tommy"]
    print(name_list[0:2])       #['eirc', 'morra']
    print(name_list[2:len(name_list)])       #['tommy']
    print(type(li[1:2]))        #<class 'list'>切片取出之后是列表类型
    

    追加与扩展

    追加:

    name_list = ["eirc","morra","tommy"]
    name_list.append('456')     #直接操作对象,无返回值
    print(name_list)
    
    OUTPUT:
    ['eirc', 'morra', 'tommy', '456']
    

    扩展:

    name_list = ["eirc","morra","tommy"]
    name_list2 = ["bom"]
    name_list.extend(name_list2)       #直接操作对象,无返回值
    print(name_list)
    
    OUTPUT:
    ['eirc', 'morra', 'tommy', 'bom']
    

    插入

    name_list = ["eirc","morra","tommy"]
    name_list.insert(1,'hello')        #直接操作对象,无返回值
    print(name_list)
    
    OUTPUT:
    ['eirc', 'hello', 'morra', 'tommy']
    

    删除

    pop():删除尾部元素

    name_list = ["eirc","morra","tommy"]
    temp = name_list.pop()        #删除尾部元素,并把所删除的元素存到一个新值里
    print(name_list)
    print(temp)
    
    OUTPUT:
    ['eirc', 'morra']
    tommy
    

    remove():删除指定元素,只能有一个参数(匹配从左到右的第一个),不能加index

    name_list = ["eirc","morra","tommy"]
    name_list.remove("morra")
    print(name_list)
    
    OUTPUT:
    ['eirc', 'tommy']
    

    del:删除指定元素,可以使用索引和切片

    name_list = ["eirc","morra","tommy","bom"]
    del name_list[0]
    print(name_list)
    
    del name_list[1:2]      
    print(name_list)
    OUTPUT:
    ['morra', 'tommy', 'bom']
    ['morra', 'bom']
    

    列表脚本操作符

    列表对+和的操作符与字符串相似。+号用于组合列表,号用于重复列表,例如:

    print len([1, 2, 3]); #3
    print [1, 2, 3] + [4, 5, 6]; #[1, 2, 3, 4, 5, 6]
    print ['Hi!'] * 4; #['Hi!', 'Hi!', 'Hi!', 'Hi!']
    print 3 in [1, 2, 3] #True
    for x in [1, 2, 3]: print x, #1 2 3
    

    拷贝

    list的拷贝有5种方式

    #1
    listb = lista[:]
    
    #2
    listb = list(lista)
    
    #3
    listb = [i for i in lista]
    
    #4
    import copy
    listb = copy.copy(lista)               #浅拷贝
    
    #5
    import copy
     listb = copy.deepcopy(lista)      #深拷贝
    

    补充

    注意:在业务代码里,一般会把列表写成 a = [1,2,3,]的形式,在使用特定框架时会用到。

    三、可迭代性

    一般来说只要可以用for循环,我们就认为它是可迭代的

    class list(object):
        """
        list() -> new empty list
        list(iterable) -> new list initialized from iterable's items
        """
    

    判断一个数据类型是否可迭代:

    from collections import Iterable    #使用collections模块的Iterable类型来判断
    
    li = [1,2,3,4]
    ret = isinstance(li,Iterable)
    print(ret)    #True
    

    字符串转列表

    s = "你好morra"
    li = list(s)
    print(li)
    
    OUTPUT:
    ['你', '好', 'm', 'o', 'r', 'r', 'a']
    

    元组转列表

    tu = ("你好","alex")
    li = list(tu)
    print(li)
    
    OUTPUT:
    ['你好', 'alex']
    

    字典转列表

    dic = {'k1':'hello','k2':'morra'}
    l3 = list(dic)              #字典在循环的时候默认只循环key
    print(l3)
    
    l4 = list(dic.values())
    print(l4)
    
    l5 = list(dic.items())
    print(l5)
    
    OUTPUT:
    ['k2', 'k1']
    ['morra', 'hello']
    [('k2', 'morra'), ('k1', 'hello')]
    

    四、源码

    class list(object):
        """
        list() -> new empty list
        list(iterable) -> new list initialized from iterable's items
        """
        def append(self, p_object): 
            """追加,直接操作对象,无返回值"""
            """ L.append(object) -> None -- append object to end """
            pass
    
        def clear(self): 
            """ L.clear() -> None -- remove all items from L """
            pass
    
        def copy(self): 
            
            """ L.copy() -> list -- a shallow copy of L """
            return []
    
        def count(self, value): 
            """ L.count(value) -> integer -- return number of occurrences of value """
            return 0
    
        def extend(self, iterable): 
            """ L.extend(iterable) -> None -- extend list by appending elements from the iterable """
            pass
    
        def index(self, value, start=None, stop=None): 
            """
            L.index(value, [start, [stop]]) -> integer -- return first index of value.
            Raises ValueError if the value is not present.
            """
            return 0
    
        def insert(self, index, p_object): 
            """ L.insert(index, object) -- insert object before index """
            pass
    
        def pop(self, index=None): 
            """
            L.pop([index]) -> item -- remove and return item at index (default last).
            Raises IndexError if list is empty or index is out of range.
            """
            pass
    
        def remove(self, value): 
            """
            L.remove(value) -> None -- remove first occurrence of value.
            Raises ValueError if the value is not present.
            """
            pass
    
        def reverse(self): 
            """列表倒序"""
            """ L.reverse() -- reverse *IN PLACE* """
            pass
    
        def sort(self, key=None, reverse=False): 
            """"快速排序,问:包含字母数字中文的列表该怎么排序?"""
            """ L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE* """
            pass
    
        def __add__(self, *args, **kwargs): 
            """ Return self+value. """
            pass
    
        def __contains__(self, *args, **kwargs): 
            """ Return key in self. """
            pass
    
        def __delitem__(self, *args, **kwargs): 
            """ Delete self[key]. """
            pass
    
        def __eq__(self, *args, **kwargs): 
            """ Return self==value. """
            pass
    
        def __getattribute__(self, *args, **kwargs): 
            """ Return getattr(self, name). """
            pass
    
        def __getitem__(self, y): 
            """ x.__getitem__(y) <==> x[y] """
            pass
    
        def __ge__(self, *args, **kwargs): 
            """ Return self>=value. """
            pass
    
        def __gt__(self, *args, **kwargs): 
            """ Return self>value. """
            pass
    
        def __iadd__(self, *args, **kwargs): 
            """ Implement self+=value. """
            pass
    
        def __imul__(self, *args, **kwargs): 
            """ Implement self*=value. """
            pass
    
        def __init__(self, seq=()): # known special case of list.__init__
            """
            list() -> new empty list
            list(iterable) -> new list initialized from iterable's items
            # (copied from class doc)
            """
            pass
    
        def __iter__(self, *args, **kwargs): 
            """ Implement iter(self). """
            pass
    
        def __len__(self, *args, **kwargs): 
            """ Return len(self). """
            pass
    
        def __le__(self, *args, **kwargs): 
            """ Return self<=value. """
            pass
    
        def __lt__(self, *args, **kwargs): 
            """ Return self<value. """
            pass
    
        def __mul__(self, *args, **kwargs): 
            """ Return self*value.n """
            pass
    
        @staticmethod # known case of __new__
        def __new__(*args, **kwargs): 
            """ Create and return a new object.  See help(type) for accurate signature. """
            pass
    
        def __ne__(self, *args, **kwargs): 
            """ Return self!=value. """
            pass
    
        def __repr__(self, *args, **kwargs): 
            """ Return repr(self). """
            pass
    
        def __reversed__(self): 
            """ L.__reversed__() -- return a reverse iterator over the list """
            pass
    
        def __rmul__(self, *args, **kwargs): 
            """ Return self*value. """
            pass
    
        def __setitem__(self, *args, **kwargs): 
            """ Set self[key] to value. """
            pass
    
        def __sizeof__(self): 
            """ L.__sizeof__() -- size of L in memory, in bytes """
            pass
    
        __hash__ = None
    
  • 相关阅读:
    UVa 116 单向TSP(多段图最短路)
    POJ 1328 Radar Installation(贪心)
    POJ 1260 Pearls
    POJ 1836 Alignment
    POJ 3267 The Cow Lexicon
    UVa 1620 懒惰的苏珊(逆序数)
    POJ 1018 Communication System(DP)
    UVa 1347 旅行
    UVa 437 巴比伦塔
    UVa 1025 城市里的间谍
  • 原文地址:https://www.cnblogs.com/whatisfantasy/p/5956754.html
Copyright © 2011-2022 走看看