python小甲鱼101112----------列表

10

结合数组理解,列表是更为强大的数组,数组中只能有一种数据类型,而列表中可以有多种;

三种向列表中添加元素方法:

①append()#只能添加一个元素,在列表尾部添加

>>> member=['bai','hei','2']
>>> member.append(['huang','5'])
>>> member
['bai', 'hei', '2', ['huang', '5']]

②extend()#以列表形式添加多个元素,类似于合并两个列表,也在尾部加入

>>> member=['bai','hei','2']
>>> member.extend(['huang','5'])
>>> member
['bai', 'hei', '2', 'huang', '5']

③insert()#指定元素位置插入

>>> member=['bai','hei','2']
>>> member.insert(0,'huang')
>>> member
['huang', 'bai', 'hei', '2']
>>> member.insert(1,['fen','lan'])
>>> member
['huang', ['fen', 'lan'], 'bai', 'hei', '2']

似乎不能同时插入多个

>>> member=['bai','hei','2']
>>> member.insert(1,'1',2,'fen')
Traceback (most recent call last):
  File "<pyshell#22>", line 1, in <module>
    member.insert(1,'1',2,'fen')
TypeError: insert() takes exactly 2 arguments (4 given)

11

1、从列表中删除元素

①remove()

member.remove('2')#括号中是列表的某个元素值

②del#不带括号,是类似于print那样的语句

>>> member
['1', '1', 'wwww', 'eee']
>>> del member[0:2]
>>> member
['wwww', 'eee']
>>> 

删除一个,整个都可以

③pop()#把列表视为栈,后进先出;括号里加序列号可删除某固定位置元素

>>> member=['1','wwww','eee']
>>> member.pop()
'eee'
>>> member
['1', 'wwww']
>>> member.pop(0)
'1'
>>> member
['wwww']
>>> 

2、列表分片,类似matlab

>>> member=['1', '1', 'wwww', 'eee']
>>> member[1:2]
['1']
>>> member[1:5]
['1', 'wwww', 'eee']
>>> member[:2]
['1', '1']
>>> member[3:]
['eee']
>>> member[2:]
['wwww', 'eee']

可以看出,冒号前面数字是真正的序列号,而冒号后面数字到不了

3、拷贝列表

member2=member[:]

list1=[1,3,2,4]

list2=list1[:]

list3=list1

print(list1,list2,list3)

list1.sort()

print(list1,list2,list3)

 

list1=[1,2,3,4]

list2=[1,3,2,4]

list3=[1,2,3,4]

 

注意!这里不能用c语言中指针的概念去理解,Python的变量就像一个标签,就一个名字而已,贴哪是哪,指哪打哪,呃,画个图;

为什么说不能用指针的概念理解:

>>> old=[1,2,3,4,5]
>>> new=old
>>> old=[6]
>>> old
[6]
>>> new
[1, 2, 3, 4, 5]

如果用指针理解,new现在就是old,old改变,new也应该改变;

但在python中不是这样。python中没有变量,只有名字。所谓名字,是把内容放进去,【1,2,3,4,5】的名字一开始叫old,后来叫做new。【6】后来叫做old。所以喊old,【6】答到;喊new,【1,2,3,4,5】答到。

 

-------------------------------------------------------课后--------------------------------------------------------------------------------------------------

0. 下边的列表分片操作会打印什么内容?

>>> list1 = [1, 3, 2, 9, 7, 8]
>>> list1[2:5]

[2,9,7]

 

1.请问 list1[0] 和 list1[0:1] 一样吗?

不一样,list1[0]返回第0个元素的值,list1[0:1]返回一个只含有第0个元素的列表

 

2.如果你每次想从列表的末尾取出一个元素,并将这个元素插入到列表的最前边,你会怎么做?

list1.insert(0,list1.pop())

3. 有些鱼油比较调皮,他说我想试试 list1[-3:-1] 会不会报错,怎么知道一试居然显示 [9, 7],这是怎么回事呢?

答:Python 的列表很聪明,竟然支持负数索引,如图:

正常索引从左到右索引,负数索引是从右到左

 

4.在进行分片的时候,我们知道分片的开始和结束位置需要进行指定,但其实还有另外一个隐藏的设置:步长。

list1[0:6:2]

[1,2,7]

1)简洁分片操作:

list1[::2]

[1,2,7]

2)步长不能为0,会报错

 

5.列表的复制

list1=[1,3,2,4]

list2=list1[:]

list3=list1

print(list1,list2,list3)

list1.sort()

print(list1,list2,list3)

 

list1=[1,2,3,4]

list2=[1,3,2,4]

list3=[1,2,3,4]

---------------------------------------------------------------------------------------------------

12

1、列表大小的比较(有点绕)

从第一个元素顺序开始比较,如果相等,则继续,返回第一个不想等元素比较的结果。如果所有元素比较均相等,则长的列表大,一样长则两列表相等

>>> member=[1,2,3,4,5,6]
>>> member2=[2,5,6,7,1,4]
>>> member<member2
True
>>> member>member2
False

2、一些列表的操作

①list*=3#列表中元素重复三遍

②in 和not in

>>> list=[1,2,3,4,5]
>>> 1 in list
True
>>> 5 not in list
False

③访问列表中列表的元素

>>> list=[1,2,3,[4,5],6]
>>> 4 in list
False
>>> list[3][1]
5

④列表的内置函数

>>> dir(list)
['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']

常用函数:

(1)count(内容)#判断内容在列表中出现次数

>>> list=[1,2,3,4,5,6,7,3,3]
>>> list.count(3)
3

(2)index(内容)#找到该内容的序列数,若出现多次,则返回第一次的序列数

    index(内容,起始位置,末位置)#找到从起始位置到末位置的该内容序列数

>>> list=[1,2,3,4,5,6,7,3,3]
>>> list.index(3)
2
>>> list.index(3,4,8)
7

(3)reverse()#翻转,倒置

(4)sort()#默认从小到大排序

list.sort(reverse==true)#从大到小排序

 

-----------------------------------------------------12课后题-------------------------------------------------------

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

list1[1][2]=['小鱿鱼']

 

2. 要对一个列表进行顺序排序,请问使用什么方法?

列表名.sort()

 

3. 要对一个列表进行逆序排序,请问使用什么方法?

列表名.sort()

列表名.reverse()

或 列表名.sort(reverse=True)

 

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

list1=[1,2,3,4]

list1.clear()    #clear()不添加参数

print(list1)----[]

list2=list1.copy()

print(list2)-----[1,2,3,4]

 

5. 你有听说过列表推导式或列表解析吗? 

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

相当于

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

 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值