列表是python常用的一种变量。 是由一些列按照特定顺序排列的元素组成的。你可以创建包含字母表中的所有字母,数字。可以将任何东西都加入到列表中。

通常情况下,列表中都包含多个元素,所以建议变量的名称以复数的形式来表示,比如 foods, names, cars。

在Python中,我们用方括号 [] 来表示列表,使用逗号来进行元素分隔:

  1. names = ["Ralf", "Rachel", "clark"]
  2. print(names)
  3.  
  4. # 输出: ['Ralf', 'Rachel', 'clark']

和字符串类型变量相类似,我们可以使用索引来访问list中的变量,索引从0 开始计数:

  1. names = ['Ralf', 'Rachel', 'clark']
  2. print(names[0])
  3. print(names[2])
  4. print(names[-1])
  5. print(names[3])
  6.  
  7. # 输出: ralf
  8. # 输出: clark
  9. # 输出: clark
  10. # 输出: IndexError: list index out of range

大多数定义的列表都是动态的,这意味着列表创建后,将随着程序的运行增减元素。

可以根据索引定位直接修改列表元素:

  1. names = ['Ralf', 'Rachel', 'clark']
  2. print(names[1])
  3. names[1] = 'Terry'
  4. print(names[1])
  5. # 输出: Rachel
  6. # 输出: Terry

添加元素到list中,我们可以使用list的内置函数来实现:

  1. names = ['Ralf', 'Rachel', 'clark']
  2.  
  3. """ 在List末尾插入一个数值"""
  4. names.append('Terry')
  5. print(names)
  6. # 输出: ['Ralf', 'Rachel', 'clark', 'Terry']
  7.  
  8. """ 在首位置插入一个数值"""
  9. names.insert(0, 'LEONA')
  10. print(names)
  11. # 输出: ['LEONA', 'Ralf', 'Rachel', 'clark', 'Terry']

删除列表中的元素主要有以下几种方法: del,pop(), remove

  1. names = ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry']
  2.  
  3. """ 删除List中的第二个值 Rachel"""
  4. del names[1]
  5. print(names)
  6. # 输出: ['Ralf', 'Clark', 'Leona', 'Terry']
  7.  
  8. """ pop()会从列表中取出最后的一个值,并将该元素从list中删除"""
  9. pop_name = names.pop()
  10. print(pop_name)
  11. print(names)
  12. # 输出:
  13. # Terry
  14. # ['Ralf', 'Clark', 'Leona']
  15.  
  16. """ pop()也可以从指定位置处取值和删除元素"""
  17. pop_name = names.pop(2)
  18. print(pop_name)
  19. print(names)
  20. # 输出:
  21. # Leona
  22. # ['Ralf', 'Clark']
  23.  
  24. """ 使用remove()根据值来删除元素"""
  25. names.remove('Clark')
  26. print(names)
  27. # 输出:['Ralf']
  28.  
  29. """ 注意remove()只会删除一个元素,如果list存在重复的值,那么只会删除第一个匹配的值"""
  30. names2 = ['Ralf', 'Clark', 'Clark', 'Leona', 'Terry']
  31. names2.remove('Clark')
  32. print(names2)
  33. # 输出:['Ralf', 'Clark', 'Leona', 'Terry']

列表排序,我们可以永久或者临时性的对list进行排序,使用sort和sorted方法:

  1. names = ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry']
  2.  
  3. """ 使用sorted()函数临时排序list中的元素"""
  4. print(sorted(names))
  5. print(sorted(names, reverse = True))
  6. print(names)
  7. #输出:
  8. #['Clark', 'Leona', 'Rachel', 'Ralf', 'Terry']
  9. #['Terry', 'Ralf', 'Rachel', 'Leona', 'Clark']
  10. #['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry']
  11.  
  12. """使用list内置函数sort()实现元素的排序的永久化"""
  13. print(names)
  14. names.sort()
  15. print(names)
  16. #输出:
  17. #['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry']
  18. #['Clark', 'Leona', 'Rachel', 'Ralf', 'Terry']

确定列表的长度,我们可以使用len()函数来实现

  1. names = ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry']
  2.  
  3. """ 使用len()函数来得到list中的元素的个数"""
  4. print(len(names))
  5.  
  6. #输出: 5

遍历整个列表,我们可以使用循环的形式遍历整个列表中的元素:

  1. """ 使用For循环遍历整个List中的元素"""
  2. for name in names:
  3. print(name)
  4.  
  5. #输出: Ralf
  6. #Rachel
  7. #Clark
  8. #Leona
  9. #Terry

列表切片, List和string相类似,都支持索引和切片方式的取值。我们可以使用[start:end:step]的方式对列表中的元素进行读取操作。注意start从0开始,第end个元素不包含在操作中。

  1. names = ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry']
  2.  
  3. """取出list中下标1到2的元素"""
  4. print(names[1:3])
  5. #输出: ['Rachel', 'Clark']
  6.  
  7. """取出list中下表从开始到3的元素"""
  8. print(names[:4])
  9. #输出: ['Ralf', 'Rachel', 'Clark', 'Leona']
  10.  
  11. """从下标0开始每格两个取一次值"""
  12. print(names[::2])
  13. #输出: ['Ralf', 'Clark', 'Terry']

List列表也支持复数的取值,表示从后往前取值:

  1. names = ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry']
  2.  
  3. """取出list中倒数第三个到末尾的所有元素"""
  4. print(names[-3:])
  5. #输出: ['Clark', 'Leona', 'Terry']
  6.  
  7. """从List末尾取出所有元素"""
  8. print(names[::-1])
  9. #输出: ['Terry', 'Leona', 'Clark', 'Rachel', 'Ralf']
  10.  
  11. """取出从下标0开始到倒数第三个元素前的所有元素"""
  12. print(names[:-3:])
  13. #输出: ['Ralf', 'Rachel']

注意: list切片返回的结果任然是一个列表(List)。

列表的复制。我们尝试使用赋值的形式复制一张新的列表,发现其不能正确的工作:

  1. names1 = ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry']
  2. names2 = names1
  3.  
  4. names1.append('Heidern')
  5. print(names1)
  6. print(names2)
  7.  
  8. #输出:
  9. ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry', 'Heidern']
  10. ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry', 'Heidern']

我们发现,两个list发生了相同的变化。这是由变量特性决定, python是一种地址指向。names定义了变量的值后,这些数值存储到内存中,names作为变量,其指针指向了存储这些值得地址。而names2指向了names1指向的地址。因此两个实际上指向的存储地址是一样的。

我们如果想要复制列表,需要使用切片或者遍历的方式来实现:

  1. names1 = ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry']
  2. names2 = names1[:]
  3.  
  4. names1.append('Heidern')
  5. print(names1)
  6. print(names2)
  7.  
  8. #输出:
  9. ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry', 'Heidern']
  10. ['Ralf', 'Rachel', 'Clark', 'Leona', 'Terry']

Python 学习笔记5 变量-列表的更多相关文章

  1. python学习笔记(一)、列表和元祖

    该一系列python学习笔记都是根据<Python基础教程(第3版)>内容所记录整理的 1.通用的序列操作 有几种操作适用于所有序列,包括索引.切片.相加.相乘和成员资格检查.另外,Pyt ...

  2. Python 学习笔记2 变量

    Python变量的一些命名规则和指南 每种编程语言都需要变量, 这些变量的命名,我们一般会遵守一些公认的规则. 已达到方便自己,他人阅读的好处. 变量只能包含字母.数字和下划线.变量可以以字母和下划线 ...

  3. Python学习笔记 第一课 列表

    Python的列表就像是一个数组: 一.创建列表 movies=["The Holy Grail","Then Life of Brian","The ...

  4. Python学习笔记6(列表生成式)

    1.生成列表 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >>> range(1, 11) [1, 2, 3 ...

  5. Python 学习笔记6 变量-字典

    字典是python中一个十分重要的变量,他是一个可变的容器对象.通过一组key(键)和value(值)对组成一个元素. 组成形式为{'key':'value', 'key':'value'}.整个字典 ...

  6. python 学习笔记二_列表

    python不需要声明类型信息,因为Python的变量标识符没有类型. 在Python中创建一个列表时,解释器会在内存中创建一个类似数组的数据结构类存储数据,数据项自下而上堆放(形成一个堆栈).索引从 ...

  7. python 学习笔记二 (列表推导式)

    2018年年初写了第一篇博客,说要做一个认真的技术人 https://www.cnblogs.com/yingchen/p/8455507.html 今天已经是11月19日了,这是第二篇博客,看来坚持 ...

  8. Python学习笔记-数字,列表,元祖,切片,循环

    数字 1,加减乘除:+,-,*,/ 2,平方:** 3,立方:**3 4,字符串转换:str(数字) 5,浮点数:带小数点  0.2 Python编程建议 import this >>&g ...

  9. python学习笔记:数据类型——列表/数组(list)

    Python内置的一种数据类型是列表:list.list是一种有序的集合,可以随时添加和删除其中的元素.通过下标访问列表中的元素(又称索引.角标),下标从0开始计数.list定义,使用中括号[]. l ...

随机推荐

  1. Notepad++崩溃后文件内容找不到问题

    也许是因为Ctrl + s 摁太多太频繁,一不小心Notepad++崩溃了 重启后发现原来的文件还在,但是文件内容全部都被清空了 我没有手动备份这个文件, 如何找回??? 点击设置,首选项,里面有个备 ...

  2. PCA,到底在做什么

    很久以前写过一篇 PCA 的小白教程,不过由于当时对 PCA 的理解流于表面,所以只是介绍了一下 PCA 的算法流程.今天在数图课上偶然听到 PCA 在图像压缩上的应用,突然明白了一点实质性的东西,这 ...

  3. Jmeter学习笔记03-元件作用域及执行顺序

    Jmeter可以通过鼠标拖拽来随意改变元件之间的顺序以及元件的层级关系,随着元件所在域的不同,在执行时候,会有不同效果 层级关系和元件类型决定了在测试计划中各元件的执行顺序. 1)元件的作用域: jm ...

  4. 题解 P5065 【[Ynoi2014]不归之人与望眼欲穿的人们】

    出现了一篇跑得炒鸡慢的题解! noteskey 无 fuck 说,好像就是整个数列分块然后合并区间...什么的吧 对于每块内部就是算一下前缀信息.后缀信息(就是以 第一个点/最后一个点 为一个边界,不 ...

  5. cefsharp解决闪烁

    CefSharp禁用GPU的命令行参数 其中,Major和Minor分别指代系统的主版本(大版本).次版本(小版本)版本号.其中指定了Windows7系统会禁用 GPU.,突发奇想,是否windows ...

  6. extensible_index

    create user ex identified by oracle; grant Resource to ex;grant connect to ex;grant create view to e ...

  7. Monkey自动化脚本(一)

    1.Monkey简介 Monkey-猴子,通过Monkey程序模拟用户触摸屏幕.滑动Trackball. 按键等操作来对设备上的程序进行压力测试,检测程序多久的时间会发生异常,主要用于Android ...

  8. SpringBoot webmvc项目导出war包并在外部tomcat运行产生的诸多问题以及解决方案

    背景: 有需求要将原来的Spring(3.2.6) + Springmvc + Hibernate项目重构为Springboot(1.5.2)项目 描述: 记录重构过程,以及期间遇到的种种问题和对应的 ...

  9. Golang 新手可能会踩的 50 个坑【转】

    译文:https://github.com/wuYin/blog/blob/master/50-shades-of-golang-traps-gotchas-mistakes.md 原文:50 Sha ...

  10. lintcode 447 Search in a Big Sorted Array(倍增+二分)

    题意:给一个按照升序排序的正整数数组.这个数组很大以至于只能通过固定的接口ArrayReader->get(k)来访问第k个数.并且也没有办法得知这个数组有多大.找到给出的整数target第一次 ...