zoukankan      html  css  js  c++  java
  • Python list

    Python list

    列表是最常用的 Python 数据类型,它可以作为一个方括号内的逗号分隔值出现
    创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可

    创建列表

    list1 = [1, 2, 3, 4, 5, 6, 7]
    list2 = [['a', 'b'], 'c']
    
    # 创建空列表
    list3 = []
    list4 = list()
    

    列表切片、拼接

    示例:

    list1 = [1, 2, 3, 4, 5, 6, 7]
    list2 = ['a', 'b', 'c']
    
    print(list1[2 : 4])			# 读取第3到第4个数据(左开右闭)
    print(list1[-3])			# 从右开始读取第三个数据
    print(list1[: 5])			# 读取前5个数据
    print(list1[0 : -1 : 2])	# 每隔一个数据读一个数据
    print(list1[:: -1])			# 倒序打印列表
    print(list1 + list2)		# 将list1和list2拼接起来
    

    输出结果:

    [3, 4]
    5
    [1, 2, 3, 4, 5]
    [1, 3, 5]
    [7, 6, 5, 4, 3, 2, 1]
    [1, 2, 3, 4, 5, 6, 7, 'a', 'b', 'c']
    

    列表嵌套

    列表中的元素不仅可以是字符串或数字,还可以是字典、集合或是其他列表

    list1 = [1, 2, 3, 4, 5]
    list2 = [2, 2, 2, 2, 2]
    list3 = [list1, list2]
    
    print(list3)
    print(list3[0][3:])
    

    输出结果:

    [[1, 2, 3, 4, 5], [2, 2, 2, 2, 2]]
    [4, 5]
    

    函数和方法

    函数

    函数 作用
    len(list) 列表元素个数
    max(list) 返回列表元素最大值
    min(list) 返回列表元素最小值
    list(seq) 将元组转换为列表

    方法

    方法 作用
    list.append(obj) 在列表末尾添加新的对象
    list.count(obj) 统计某个元素在列表中出现的次数
    list.extend(seq) 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
    list.index(obj) 从列表中找出某个值第一个匹配项的索引位置
    list.insert(index,obj) 将对象插入列表(通过index指定位置)
    list.pop([index=-1]) 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
    =del list[-1]
    list.remove(obj) 移除列表中某个值的第一个匹配项
    list.reverse() 反向列表中元素
    list.sort(key=None,reverse=False) 对原列表进行排序,(可以通过 key 传入函数对数据进行处理之后排序)
    list.clear() 清空列表
    list.copy() 复制列表

    list.sort()

    list.sort() 可以将 list 进行排序,通过传入参数可以指定排序依据的字段
    示例:

    def get_sort_key(list_):
        return len(list_[1])
    
    
    a = [('a', [1, 2]), ('b', [1, 2, 3]), ('c', [1])]
    a.sort(key=get_sort_key)
    print(a)
    
    

    输出结果:

    [('c', [1]), ('a', [1, 2]), ('b', [1, 2, 3])]
    

    注意

    在循环列表的同时进行修改,可能导致一些问题:

    有元素被跳过:

    def main():
        a = [1, 2, 3, 4, 5, 6, 7]
        for x in a:
            if x > 3:
                a.remove(x)
        print(a)
    
        b = [1, 2, 3, 4, 5, 6, 7]
        for x in b[:]:
            if x > 3:
                b.remove(x)
        print(b)
    
    
    if __name__ == '__main__':
        main()
    

    输出结果:

    [1, 2, 3, 5, 7]
    [1, 2, 3]
    

    很明显,b 的循环结果才是想要的结果,a 在循环时跳过了一些元素
    因为 b[:]b 的一个复制,并没有被修改

    其他数据结构

    由于列表的特性,可以用它来简单模拟其他的数据结构

    关于 Python 中的栈(stack) <- 点击查看

    class Stack(object):
    
        def __init__(self):
            self.stack = list()
    
        def push(self, data):
            """
            进栈函数
            """
            self.stack.append(data)
    
        def pop(self):
            """
            出栈函数,
            """
            return self.stack.pop()
    
        def gettop(self):
            """
            取栈顶
            """
            return self.stack[-1]
    

    队列

    关于 Python 中的队列(queue) <- 点击查看

    class Queue(object):
    
    	def __init__(self):
    		self.queue = list()
    
    	def put(self, data):
    		self.queue.append(data)
    
    	def get(self):
    		return self.queue.pop(0)
    
    	def qsize(self):
    		return len(self.queue)
    
  • 相关阅读:
    rsyslog
    java实现黄金分割数
    java实现黄金分割数
    java实现黄金分割数
    java实现黄金分割数
    java实现黄金分割数
    java实现低碳生活大奖赛
    java实现低碳生活大奖赛
    java实现低碳生活大奖赛
    java实现低碳生活大奖赛
  • 原文地址:https://www.cnblogs.com/dbf-/p/11821459.html
Copyright © 2011-2022 走看看