列表list
一般存储大量类似元素的时候会使用列表
特点:[],有序
创建空列表
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# list() -> new empty list
list1 = list()
# 推荐写法
list2 = []
print(list1)
print(list2)
创建带有元素的列表
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# list(iterable) -> new list initialized from iterable's items
# 可以存放任意类型的数据
list1 = list(['zhangsan', 'lisi', 'wangwu'])
list2 = ['zhangsan', 'lisi', 'wangwu']
print(list1)
print(list2)
添加元素
#!/usr/bin/env python
# -*- coding:utf-8 -*-
list1 = ['zhangsan', 'lisi', 'wangwu']
print("添加前", list1)
list1.append("zhaoliu")
print("添加后", list1)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
list1 = ['zhangsan', 'lisi', 'wangwu']
print("添加前", list1)
list1.insert(2, "zhaoliu")
print("添加后", list1)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
list1 = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
list2 = ['a', 'b', 'c']
list1.extend(list2)
print(list1)
删除元素
#!/usr/bin/env python
# -*- coding:utf-8 -*-
list1 = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
print("删除前", list1)
list1.pop()
print("删除后", list1)
print("删除前", list1)
list1.pop(1)
print("删除后", list1)
# 默认删除最后一个元素
# 可以通过索引删除指定位置元素(推荐)
# L.pop([index]) -> item -- remove and return item at index (default last).
# Raises IndexError if list is empty or index is out of range.
#!/usr/bin/env python
# -*- coding:utf-8 -*-
list1 = ['zhangsan', 'lisi', 'wangwu', 'lisi']
print("删除前", list1)
list1.remove("zhangsan")
print("删除后", list1)
print("删除前", list1)
list1.remove("lisi")
print("删除后", list1)
# 特点:从左向右删除符合条件的第一个元素(不推荐)
# L.remove(value) -> None -- remove first occurrence of value.
# Raises ValueError if the value is not present.
# -*- coding:utf-8 -*-
# del = delete,强制从内存中删除某个元素
list1 = ['zhangsan', 'lisi', 'wangwu', 'lisi']
print("删除前", list1)
del list1[2]
print("删除后", list1)
修改元素
#!/usr/bin/env python
# -*- coding:utf-8 -*-
list1 = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
list1[0] = "张三"
print(list1)
查询元素是否存在
#!/usr/bin/env python
# -*- coding:utf-8 -*-
list1 = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
result = 'lisi' in list1
print(result)
打印单个元素
#!/usr/bin/env python
# -*- coding:utf-8 -*-
list1 = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
print(list1[0])
print(list1[1])
print(list1[2])
利用循环遍历列表
#!/usr/bin/env python
# -*- coding:utf-8 -*-
list1 = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
for x in list1:
print(x)
利用循环遍历列表并获取对应索引
#!/usr/bin/env python
# -*- coding:utf-8 -*-
list1 = ['zhangsan', 'lisi', 'wangwu', 'zhaoliu']
for idx, x in enumerate(list1):
print(idx, x)
列表推导式
所谓的列表推导式,就是指的轻量级循环创建列表
#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 基本方式
list1 = [x for x in range(10)]
# 带if的列表推导式
list1 = [x for x in range(10) if x % 2 == 0]
# 两个for循环
list1 = [(x,y) for x in range(10) for y in range(5)]
# 三个for循环
list1 = [(x, y, z) for x in range(1, 3) for y in range(3) for z in range(4)]
print(list1)
列表推导式练习
生成一个[[1,2,3],[4,5,6]....]的列表最大值在100以内
请写出一段 Python 代码实现分组一个 list 里面的元素,比如 [1,2,3,...100]变成 [[1,2,3],[4,5,6]....]
列表常用操作
index/count
#!/usr/bin/env python
# -*- coding:utf-8 -*-
list1 = ['zhangsan', 'lisi', 'wangwu', 'lisi']
print(list1.index("lisi"))
print(list1.index("lisi", 2))
#!/usr/bin/env python
# -*- coding:utf-8 -*-
list1 = ['zhangsan', 'lisi', 'wangwu', 'lisi']
print(list1.count("lisi"))
sort
sort方法是将list按特定顺序重新排列,默认为由小到大,参数reverse=True可改为倒序,由大到小。
#!/usr/bin/env python
# -*- coding:utf-8 -*-
list1 = [1, 5, 4, 2, -3]
list1.sort()
print(list1)
list1.sort(reverse=True)
print(list1)
reverse
将list前后倒置
#!/usr/bin/env python
# -*- coding:utf-8 -*-
list1 = [1, 5, 4, 2, -3]
list1.reverse()
print(list1)
clear
清空列表
# -*- coding:utf-8 -*-
list1 = [1, 5, 4, 2, -3]
list1.clear()
print(list1)
列表的复杂结构
#!/usr/bin/env python
# -*- coding:utf-8 -*-
list1 = [['zhangsan', 20, 1.78], ['lisi', 25, 1.67], ['wangwu', 23, 1.77]]
print(list1)
#!/usr/bin/env python
# -*- coding:utf-8 -*-
list1 = [['zhangsan', 20, 1.78], ['lisi', 25, 1.67], ['wangwu', 23, 1.77]]
for x in list1:
print(x[0], x[1], x[2])
for x, y, z in list1:
print(x, y, z)
练习
计算1-100的和
简便写法:print(sum(range(1, 101)))
注意
range这个操作在python3中进行过优化
range(1, 10000)在python2中会立即创建10000个数据
在python3中不会立即创建,在循环遍历的时候才真正创建,节省了内存。
补充
列表中所有元素转字符串
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@author: 张泽楠
@contact: [email protected]
@file: main.py
@time: 2018/3/9 13:44
"""
name_list = ['张三', 20, "李四", 25]
print(name_list)
new_name_list = map(str, name_list)
print(list(new_name_list))
n维列表
#!/usr/bin/env python
# -*- coding:utf-8 -*-
"""
@author: 张泽楠
@contact: [email protected]
@file: main.py
@time: 2018/3/9 13:44
"""
n2_list = [['a', 'b', 'c'], ['d', 'e', 'f']]
print(n2_list)
print(n2_list[0][2])