列表
类似于C的数组,但是python列表可以存储整数、浮点数、字符串、对象
创建列表:
1.普通列表:
用中括号
a = [1,2,3]
member = ['a' , 'b' ]
2.混合类型列表
mix = [1 , 'abc' , 3.14 , [1,2,3]]
- 空列表
empty = []
列表操作:
1.添加元素(仅加入一个)
.apend()
member.append('a')
2.添加多个元素(列表拼接)
.extend()
txtend.append(a)
3.插入一个元素
——.insert(——)
member.insert(1,'a')
-
列表都可以存放一些什么东西?
整数,浮点数,列表,字符串,对象 -
向列表增加元素有哪些方法?
append,extend,insert -
append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?
append加一个,extend扩展列表 -
member.append([‘竹林小溪’, ‘Crazy迷恋’]) 和 member.extend([‘竹林小溪’, ‘Crazy迷恋’]) 实现的效果一样吗?
不一样,第一个实现不了 -
有列表 name = [‘F’, ‘i’, ‘h’, ‘C’],如果小甲鱼想要在元素 ‘i’ 和 ‘h’ 之间插入元素 ‘s’,应该使用什么方法来插入?
name.insert(2,‘s’) -
自己动手试试看,并分析在这种情况下,向列表添加数据应当采用哪种方法比较好?
假设给定以下列表:
member = [‘小甲鱼’, ‘黑夜’, ‘迷途’, ‘怡静’, ‘秋舞斜阳’]
要求将列表修改为:
member = [‘小甲鱼’, 88, ‘黑夜’, 90, ‘迷途’, 85, ‘怡静’, 90, ‘秋舞斜阳’, 88]
方法一:使用 insert() 和 append() 方法修改列表。
方法二:重新创建一个同名字的列表覆盖。
方法二
- 利用 for 循环打印上边 member 列表中的每个内容,如图:
for i in member:
print(i)
从列表获取元素:
a[0](从0开始)
从列表删除元素
0.remove(利用参数具体名字删除)
——.remove(‘a’)
member.remove(‘a’)
1.del()(删除)
del ___ []
3.pop ()(出栈,删除最后一位并显示)
a.pop(1)
列表分片
一次性获取多个元素:a[1:3]
- 请问如何将下边这个列表的’小甲鱼’修改为’小鱿鱼’?
- list1 = [1, [1, 2, [‘小甲鱼’]], 3, 5, 8, 13, 18]
list1[1[2]]=小鱿鱼
-
要对一个列表进行顺序排序,请问使用什么方法?
a.sort() -
要对一个列表进行逆序排序,请问使用什么方法?
a.reverse() -
列表还有两个内置方法没给大家介绍,不过聪明的你应该可以自己摸索使用的门道吧:copy() 和 clear()
copy() 方法跟使用切片拷贝是一样的: -
list2 = list1.copy()
-
list2
-
[1, [1, 2, [‘小甲鱼’]], 3, 5, 8, 13, 18]
clear() 方法用于清空列表的元素,但要注意,清空完后列表仍然还在哦,只是变成一个空列表。
-
list2.clear()
-
list2
-
[]
-
你有听说过列表推导式或列表解析吗?(类似于map,filter)
列表解析:
法1:
[x**2 for x in range(6)]
[0, 1, 4, 9, 16, 25]
法2:
seq = [11, 10, 9, 8, 7, 6]
filter(lambda x: x % 2, seq)
[11, 9, 7]
补充:
filter函数(类似于列表解析):
ilter() 函数用于过滤序列,过滤掉不符合条件的元素,返回由符合条件元素组成的新列表。
该接收两个参数,第一个为函数(或者lambda x:使用匿名函数),第二个为序列,序列的每个元素作为参数传递给函数进行判断,然后返回 True 或 False,最后将返回 True 的元素放到新列表中。
[x for x in seq if x % 2]
[11, 9, 7]
可参考:
https://blog.csdn.net/qq_38526635/article/details/81317212
- 多个值
[ ‘%s = %s’ for (k, v) in a_map.items()] - 两次循环
l1 = [1,2,3,4]
l2 = [1,2,3,4]
[x+y for x in l1 for y in l2]
[2, 3, 4, 5, 3, 4, 5, 6, 4, 5, 6, 7, 5, 6, 7, 8]
- 调用函数
[ func(x) for x in l1] #等价于map - 条件列表解析式
[ x for x in range(100) if x%2 ==0 ]
扩展:
map函数:
map() 会根据提供的函数对指定序列做映射。
第一个参数 function 以参数序列中的每一个元素调用 function 函数(或者lambda x:使用匿名函数),返回包含每次 function 函数返回值的新列表。
没听过?!没关系,我们现场来学习一下吧,看表达式:
-
[ i*i for i in range(10) ]
复制代码
你觉得会打印什么内容? -
[i*i for i in range(10)]
- [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
复制代码
居然分别打印了0到9各个数的平方,然后还放在列表里边了有木有?!
列表推导式(List comprehensions)也叫列表解析,灵感取自函数式编程语言 Haskell。Ta 是一个非常有用和灵活的工具,可以用来动态的创建列表,语法如:
[有关A的表达式 for A in B]
例如
-
list1 = [x**2 for x in range(10)]
-
list1
- [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
复制代码
相当于 - list1 = []
- for x in range(10):
-
list1.append(x**2)
复制代码
问题:请先在 IDLE 中获得下边列表的结果,并按照上方例子把列表推导式还原出来。
-
list1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
复制代码
a=[]
for x in range(10):
for y in range(10):
if not x%2==0 and y%2==0:
a.append((x,y))
print(a)
列表常用操作符