Python基础学习11 12

列表

类似于C的数组,但是python列表可以存储整数、浮点数、字符串、对象

创建列表:
1.普通列表:
用中括号

a = [1,2,3]
member = ['a' , 'b' ]

2.混合类型列表

mix = [1 , 'abc' , 3.14 , [1,2,3]]
  1. 空列表
empty = []

列表操作:
1.添加元素(仅加入一个)
.apend()

member.append('a')

2.添加多个元素(列表拼接)
.extend()

txtend.append(a)

3.插入一个元素
——.insert(——)

member.insert(1,'a')
  1. 列表都可以存放一些什么东西?
    整数,浮点数,列表,字符串,对象

  2. 向列表增加元素有哪些方法?
    append,extend,insert

  3. append() 方法和 extend() 方法都是向列表的末尾增加元素,请问他们有什么区别?
    append加一个,extend扩展列表

  4. member.append([‘竹林小溪’, ‘Crazy迷恋’]) 和 member.extend([‘竹林小溪’, ‘Crazy迷恋’]) 实现的效果一样吗?
    不一样,第一个实现不了

  5. 有列表 name = [‘F’, ‘i’, ‘h’, ‘C’],如果小甲鱼想要在元素 ‘i’ 和 ‘h’ 之间插入元素 ‘s’,应该使用什么方法来插入?
    name.insert(2,‘s’)

  6. 自己动手试试看,并分析在这种情况下,向列表添加数据应当采用哪种方法比较好?

假设给定以下列表:

member = [‘小甲鱼’, ‘黑夜’, ‘迷途’, ‘怡静’, ‘秋舞斜阳’]

要求将列表修改为:

member = [‘小甲鱼’, 88, ‘黑夜’, 90, ‘迷途’, 85, ‘怡静’, 90, ‘秋舞斜阳’, 88]

方法一:使用 insert() 和 append() 方法修改列表。

方法二:重新创建一个同名字的列表覆盖。

方法二

  1. 利用 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]

  1. 请问如何将下边这个列表的’小甲鱼’修改为’小鱿鱼’?
  2. list1 = [1, [1, 2, [‘小甲鱼’]], 3, 5, 8, 13, 18]

list1[1[2]]=小鱿鱼

  1. 要对一个列表进行顺序排序,请问使用什么方法?
    a.sort()

  2. 要对一个列表进行逆序排序,请问使用什么方法?
    a.reverse()

  3. 列表还有两个内置方法没给大家介绍,不过聪明的你应该可以自己摸索使用的门道吧:copy() 和 clear()
    copy() 方法跟使用切片拷贝是一样的:

  4. list2 = list1.copy()

  5. list2

  6. [1, [1, 2, [‘小甲鱼’]], 3, 5, 8, 13, 18]

clear() 方法用于清空列表的元素,但要注意,清空完后列表仍然还在哦,只是变成一个空列表。

  1. list2.clear()

  2. list2

  3. []

  4. 你有听说过列表推导式或列表解析吗?(类似于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 函数返回值的新列表。
在这里插入图片描述

没听过?!没关系,我们现场来学习一下吧,看表达式:

  1. [ i*i for i in range(10) ]
    复制代码
    你觉得会打印什么内容?

  2. [i*i for i in range(10)]

  3. [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    复制代码
    居然分别打印了0到9各个数的平方,然后还放在列表里边了有木有?!

列表推导式(List comprehensions)也叫列表解析,灵感取自函数式编程语言 Haskell。Ta 是一个非常有用和灵活的工具,可以用来动态的创建列表,语法如:

[有关A的表达式 for A in B]

例如

  1. list1 = [x**2 for x in range(10)]

  2. list1

  3. [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
    复制代码
    相当于
  4. list1 = []
  5. for x in range(10):
  6.  list1.append(x**2)
    

复制代码

问题:请先在 IDLE 中获得下边列表的结果,并按照上方例子把列表推导式还原出来。

  1. 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)

列表常用操作符

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值