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])]

如果条件简单可以直接使用匿名函数
示例:

a = [('a', [1, 2]), ('b', [1, 2, 3]), ('c', [1])]
a.sort(key=lambda x: len(x[1]))
print(a)

注意

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

有元素被跳过:

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)

posted on 2019-11-08 16:58  doubtful  阅读(287)  评论(0编辑  收藏  举报

导航