列表有关
来源:互联网 发布:保险师软件下载 编辑:程序博客网 时间:2024/06/05 11:33
笔记:
C语言中的数组,要求数组中的元素必须都是同一类型,但是Python中不直接定义元素的类型,所以用到列表,列表中的元素可以是混合的类型。
1、向列表中添加元素, 向列表增加元素有哪些方法(设列表的名称为member):
A. append():member.append(要添加的元素),注意每次只能添加一个元素,被添加的元素自动添加到列表末尾
B. extend():member.extend([元素1,元素2]),以列表的形式追加新元素到原列表,每次可以添加多个元素,被添加的元素自动添加到列表末尾
C. insert():member.insert(i,x),i表示要追加的位置(注意起始位置为0),x表示被插入的元素
>>> list1 = [1,2,3,4,5]>>> list2 = ["a","b","c","d"]>>> for i in range(len(list2)): list1.insert(2*i+1,list2[i])>>> list1[1, 'a', 2, 'b', 3, 'c', 4, 'd', 5]
如何一次打印两个元素??
方法1:
>>> temp = [1, 'a', 2, 'b', 3, 'c', 4, 'd', 5 , 'e']>>> for i in range(len(temp)): if i %2 ==0: print(temp[i],temp[i+1])1 a2 b3 c4 d5 e
方法2:
>>> count = 0>>> while count < len(temp): print(temp[count],temp[count+1]) count +=21 a2 b3 c4 d5 e
2、从列表删除元素:
remove():member.remove(‘元素名’)(注意:元素必须存在于列表中,否则会报错)
del:del member[索引值]
特别的,删除整个列表:del member
pop():弹栈,member.pop(索引值)
如果你每次想从列表的末尾取出一个元素,并将这个元素插入到列表的最前边,你会怎么做?
论坛参考答案: list1.insert(0, list1.pop())
3、列表分片(slice)
member[1:3]:原列表member中索引值1~3的元素组成新的列表
member[1:]:索引值从1开始到最后一个元素
member[:]:原列表所有元素,特别的member2 = member[:]完成列表的拷贝
步长可以是负数,改变方向(从尾部开始向左走):
>>> list1[::-2] [8, 9, 3]
4、列表的小伙伴们:
——list.reverse():翻转列表
——list.sort():按照指定的方式对列表成员排序,未指定则从小到大排列
特别的:sort(reverse=False),默认为False
——list.index(x) :返回元素X所在的位置即索引
——list.count(x) : 返回元素X在列表中出现的次数
5、列表的常用操作符:比较;逻辑;连接(+);重复;成员关系
6、 列表还有两个内置方法没给大家介绍,不过聪明的你应该可以自己摸索使用的门道吧:copy() 和 clear()
7、最重要的之一:列表推导式
参考: http://blog.csdn.net/junwei0206/article/details/44737363
列表推导式(List comprehensions)也叫列表解析,灵感取自函数式编程语言 Haskell。Ta 是一个非常有用和灵活的工具,可以用来动态的创建列表,语法如:
[有关A的表达式 for A in B]
[ i*i for i in range(10) ]
问题:请先在 IDLE 中获得下边列表的结果,并按照上方例子把列表推导式还原出来。[python] view plain copylist1 = [(x, y) for x in range(10) for y in range(10) if x%2==0 if y%2!=0]
8、最后一个问题
课堂上老师说可以利用分片完成列表的拷贝 list2 = list1[:],那事实上可不可以直接写成 list2 = list1 更加简洁呢?
参考:http://blog.csdn.net/junwei0206/article/details/44734171
论坛参考答案:(比较长,有价值)千万不可以!
好的,为了大家都可以弄明白这个【必须理解】的概念,我啰嗦一下:
上节课我们提到使用分片创建列表的拷贝,例如:
[python] view plain copy
list1 = [1, 3, 2, 9, 7, 8]
list2 = list1[:]
list2
[1, 3, 2, 9, 7, 8]
list3 = list1
list3
[1, 3, 2, 9, 7, 8]
看上去貌似一样的,对吧?但事实上呢?我们利用列表的一个小伙伴做下修改,大家看一下差别:
[python] view plain copy
list1.sort()
list1
[1, 2, 3, 7, 8, 9]
看到吧,我们的list1已经从小到大排了个序,那list2和list3呢?
[python] view plain copy
list2
[1, 3, 2, 9, 7, 8]
可以看到我们使用分片的方式得到的list2很有原则、很有格调,并不会因为list1的改变而改变,这个原理我待会儿跟大家说,我们接着看下list3:
[python] view plain copy
list3
[1, 2, 3, 7, 8, 9]
大家可以看到了,真正的汉奸、墙头草是list3,Ta跟着list1改变了,这是为什么呢?
不知道大家还记不记得我们在讲解变量的时候说过,Python的变量就像一个标签,就一个名字而已,贴哪是哪,指哪打哪,呃,我还是给大家伙画个图好。
测试题:注意,这道题跟上节课的那道题有点儿不同,回答完请上机实验或参考答案。[python] view plain copyold = [1, 2, 3, 4, 5] new = old old = [6] print(new) 如果不上机操作,你觉得会打印什么内容?答:1,2,3,4,5
- 列表有关
- 有关显示列表
- 有关散列表
- JqGrid有关操作 方法列表
- JqGrid有关操作 方法列表
- 浏览列表有关的对象
- 构造函数(有关初始列表)
- Openssl有关大数运算函数列表
- 有关信息抽取的文章列表(1)
- 有关信息抽取的文章列表(2)
- 有关信息抽取的文章列表
- 有关信息抽取的文章列表
- java ArrayList列表取值有关问题
- 有关Spring的[好文列表]
- 有关信息抽取的文章列表(1)
- 有关于web播放器的列表播放问题
- 有关于web播放器的列表播放问题
- Blog中介绍有关的实例列表(继续更新....)
- 斯坦福大学机器学习作业题Problem Set #2 Logistic Regression: Training stability--下篇
- IDEA :插入代码模板(Ctrl+J )
- react-native-router-flux popTo('想pop到的scene') 回退多级不能实现问题
- c++之友元
- Codeforces Gym
- 列表有关
- Unity游戏开发 全局消息传递
- (python3)1077. 互评成绩计算 (20分)——2017-12考题
- 浅析 JavaScript 执行原理
- Gobblin作为嵌入应用(Library)
- [论文笔记]TextBoxes A Fast Text Detector with a Single Deep Neural Network
- 《Java编程思想》第0记
- MyBatis动态语句及利用Map类来传递参数
- MIT-BIH心率失常数据提取及部分MATLAB程序解释