目录

1.  列表的操作

1.1   索引

1.2   加法

1.3   乘法

2.  列表的成员资格

3.  列表的函数

3.1  len()  函数

3.2  max ()  函数

3.3  min ()  函数

3.4  sum()  函数

3.5  range ()  函数

3.6  list ()  函数

4.  列表的方法()

4.1   append ()

4.2   clear ()

4.3   copy ()

4.4   count ()

4.5   extend ()

4.6   index ()

4.7   insert ()

4.8   pop ()

4.9   remove ()

4.10   reverse ()

4.11   reversed ()  函数

4.12   sort ()

4.13   sorted ()  函数

5.  列表的解析

6.  传递列表

6.1   在函数中修改列表

6.2   禁止函数修改列表

7.  总结


1.  列表的操作

1.1   索引

①  索引从 0 开始,而不是从 1 开始

language = ['C','C++','Python','Java','SQL']print(language[0])
print(language[1])

②  索引 -1 ,返回列表最后一个元素,-2,-3...依次类推 

language = ['C','C++','Python','Java','SQL']print(language[-1])
print(language[-2])

③  字符串的索引

        对于字符串字面量以及其他的列表字面量,可直接对其进行索引操作,无需先将其赋给变量。这与先赋给变量,再执行索引操作的效果是一样的。

name = 'Apeiron'print(name[0])print('Apeiron'[0])

如果函数调用返回一个序列,可直接对其执行索引操作。

例如:如果我们想获取用户输入年份的第 4 位。 

year = input('This year is ')print(year[3])

1.2   加法

可使用加法运算符来拼接列表。

①  拼接数字列表

numbers = [1,2,3] + [4,5,6]print(numbers)

②  拼接字符串

demo = 'Hello' + '  ' + 'Python'print(demo)

③  拼接数字列表和字符串 

demo = [1,2,3] + 'Python'print(demo)

  • 从上图错误消息可知,不能拼接数字列表和字符串,虽然他们都是列表。一般而言,不能拼接不同类型的列表。

1.3   乘法

将列表与数 x 相乘时,将重复这个列表 x 次来创建一个新的列表。

numbers = [7]*7print(numbers)

2.  列表的成员资格

检查特定的元素是否包含在序列中,可使用 运算符 in。它检查是否满足指定的条件,并返回相应的值:满足时返回 True,不满足时返回 False,这样的运算符被称为 布尔运算符,True 和 False 为 布尔值

numbers = [1,2,3]if 1 in numbers:print('True')
else:print('False')

一般而言,运算符 in 检查指定的对象是否是序列(或其他集合)的成员(即其中的一个元素),但对字符串来说,只有它包含的 字符 才是其成员或者元素。所以上图序号 ③ 是合理的。

3.  列表的函数

3.1  len()  函数

作用:返回列表中包含的 元素个数,即列表的长度

numbers = [1,2,3,4,5,6,7,8,9,10]print(len(numbers))

可以用于 冒泡排序算法 中求数字列表的元素个数。

3.2  max ()  函数

作用:返回列表中包含的 最大元素

numbers = [1,2,3,4,5,6,7,8,9,10]print(max(numbers))

3.3  min ()  函数

作用:返回列表中包含的 最小元素

numbers = [1,2,3,4,5,6,7,8,9,10]print(min(numbers))

3.4  sum()  函数

作用:返回列表元素的 总和

numbers = [1,2,3,4,5,6,7,8,9,10]print(sum(numbers))

3.5  range ()  函数

作用 ①:生成一系列数

for value in range(1,5):print(value)

上述代码好像应该打印数字 1~5,但实际上不会打印 5  

这是编程语言中常见的 差一行为 的结果,函数 range() 让 Python 从指定的 第一个值开始数,并在达到你指定的 第二个值停止。因为它在第二个值处停止,所以输出不包括该值(这里为 5)。

注:调用函数 range() 时,也可指定一个参数,这样它将从 0 开始。例如 range(5) ,返回数 0~4。

for value in range(5):print(value)

作用 ②:指定特定步长,生成特定一系列数

可给这个函数指定 第三个参数,Python 将根据这个步长来生成一系列数。

例如:打印 1~10 的偶数

for i in range(2,11,2):print(i)

3.6  list ()  函数

作用 ①:创建数字列表

即将 range() 作为 list () 的参数,输出一个数字列表。

numbers = list(range(1,6))print(numbers)

作用 ②:创建字符列表 

即将 字符串 作为 list () 的参数,输出一个字符列表

numbers = list('Python')print(numbers)

4.  列表的方法()

4.1   append ()

作用 ①:将元素加入列表末尾,而不影响列表中的其他所有元素

languages = ['Python','Java','C++']
print(languages)languages.append('SQL')
print(languages)

作用 ②:创建动态列表 

例如,我们可以先创建一个 空列表,在调用 append () 方法来添加元素。

languages = []
print(languages)languages.append('Python')
languages.append('C++')
languages.append('Java')
print(languages)

这种创建列表的方式极其常见,因为经常要等程序运行后,你才知道用户要在程序中哪些数据。为控制用户,可首先创建一个 空列表,用于存储用户要输入的值,然后将用户提供的每个新值附加到列表中。

append () 是 就地修改列表,这意味着它 不会返回修改后的列表,而是 直接修改旧列表。此时的结果,通常是我们想要的,但有时会带来麻烦。如果,我们想要使用 原始列表,就无法使用。

4.2   clear ()

作用:就地清空列表的内容

languages = ['Python','C++','Java']
print(languages)languages.clear()
print(languages)

4.3   copy ()

作用:复制列表

a = [1,2,3]# 把 a 列表复制给 b 列表
b = a# 给 b 列表中的第二个元素赋值
b[1] = 4print(a)
print(b)

  • 从上图中可以看到,修改 b 列表中的元素,a 列表中的元素也会发生改变。 这种复制只是将另一个名称关联到列表
a = [1,2,3]# 把 a 列表复制给 b 列表
b = a.copy()# 给 b 列表中的第二个元素赋值
b[1] = 4print(a)
print(b)

  • 从上述代码中可以看到,使用 copy ()方法复制列表,a 和 b 就会指向不同的列表,即 b 列表就是 a 列表的副本。改变副本列表 ( b 列表),a 列表也不会发生变化。

4.4   count ()

作用:计算指定的元素在列表中出现的次数

lis = ['to','be','or','not','to','be']
print(lis.count('to'))numbers = [[1,2],1,1,[2,1,[1,2]]]
print(numbers.count(1))
print(numbers.count([1,2]))

4.5   extend ()

作用:同时将多个值附加到列表末尾,换而言之,我们可以使用一个列表来扩展另一个列表 

a = [1,2,3]
b = [4,5,6]a.extend(b)print(a)

这可能看起来类似于拼接,但存在一个重要的差别,那就是 a 列表被修改扩展,在 常规拼接 中,情况是返回一个全新的列表,列表 a 没有被改变。

a = [1,2,3]
b = [4,5,6]print(a+b)
print(a)

如我们所见,拼接出来的列表与前一个示例扩展得到的列表完全相同,但这里的 a 并没有被修改。鉴于常规拼接必须使用 a 和 b 的副本创建一个新的列表,因此如果你要获得类似于下面的效果,拼接的效率将比 extend 低,如下:

a = [1,2,3]
b = [4,5,6]a = a+bprint(a)

4.6   index ()

作用:在列表中查找指定元素第一次出现的索引

knights = ['We','are','the','knights','who','say','ni']print(knights.index('who'))
print(knights[4])print(knights.index('herring'))

从上述代码可以看出,搜索单词 'who' 时,发现它位于索引 4 处。然而,在搜索 'herring' 时引发了异常,因为根本就没有找到这个单词。

4.7   insert ()

作用:将一个对象插入列表

numbers = [1,2,3,5,6,7,8,9]numbers.insert(3,'four')print(numbers)

4.8   pop ()

作用:从列表中删除一个元素(默认为最后一个元素) ,并返回这一元素

numbers = [1,2,3]# 方法中不添加参数,默认删除最后一个元素
# 并且打印 pop() 方法返回的元素
print(numbers.pop())
print(numbers)# 删除列表中第一个元素
numbers.pop(0)
print(numbers)

注:pop 是唯一既修改列表又返回一个非 None 值的列表方法 

使用 pop 可实现一种常见的数据结构 —— 栈(stack),push 和 pop 是大家普遍接受的两种栈操作。Python 没有提供 push ,但可以使用 append 来替代。方法 pop 和 append 的效果相反,因此将刚弹出的值压入(或附加)后,得到的栈与原来相同。

numbers = [1,2,3]# 从列表弹出一个元素,在将其加入到列表
numbers.append(numbers.pop())print(numbers)

4.9   remove ()

作用:删除列表中第一个被指定的元素

lis = ['to','be','or','not','to','be']lis.remove('be')
print(lis)lis.remove('bee')
print(lis)

如上述代码所见,这只删除了指定的第一个元素,无法删除列表中没有的元素。

注:remove 是就地修改且不返回值的方法之一,不同于 pop 的是,remove 修改列表,但不返回任何值。  

4.10   reverse ()

作用:按相反的顺序排列列表中的元素 、

numbers = [1,2,3]numbers.reverse()print(numbers)

注:reverse 修改列表,但不会返回任何值(与 remove 和 sort 等方法一样)。

4.11   reversed ()  函数

reverse () 方法是按逆序排列列表,此时 原列表被修改。而 reversed () 函数也是按逆序排列列表,但是原列表没有被修改

numbers = [1,2,3]print(list(reversed(numbers)))print(numbers)

注:list () 函数将返回的对象转换为列表 

4.12   sort ()

作用:对列表 就地排序,即对原始列表进行修改,使其元素按 默认顺序 (升序) 排列,而不是返回排序后的列表副本

numbers = [10,9,8,7,6,5,4,3,2,1]numbers.sort()print(numbers)

4.13   sorted ()  函数

sort () 方法将原列表修改排序,但是,有时只需要排序后的列表副本,要保留原始列表不变,这时,sort () 方法就有点力不从心了。此时,sorted () 函数可以完美的解决这一点。

numbers = [5,4,3,2,1]print(sorted(numbers))print(numbers)

注:sorted () 函数可用于任何序列,而且总是返回一个列表

5.  列表的解析

先看一个生成列表 squares 的代码:

squares = []for values in range(1,11):squares.append(values**2)print(squares)

上述生成列表 squares 的方式包含三行代码,而 列表解析 让我们只需编写一行代码就能生成这样的列表。列表解析将 for 循环和创建新元素的代码合并成一行,并自动附件新元素

squares = [value**2 for value in range(1,11)]print(squares)

要使用这种语法,首先指定一个描述型的 列表名,如 squares 。然后,指定一个左方括号,并定义一个 表达式,用于生成要存储到列表的值。在这个示例中,表达式的值为 value**2,它计算平方值。接下来编写一个 for 循环,用于给表达式提供值,在加上右方括号。

在这个示例中,for 循环为 for value in range(1,11),它将 1~10 提供给表达式 value**2。请注意,这里的 for 语句没有冒号。

6.  传递列表

将列表传递给函数后,函数就能直接访问其内容。下面使用函数来提高处理列表的效率。

假设有一个 编程语言列表,我们要 问候 其中的每位编程语言。下面的示例将包含编程语言的列表,传递给一个名为 greet_languages () 的函数,这个函数问候列表中的每个编程语言:

def greet_languages(languages):'''向列表中的每位编程语言发出简单的问候'''for language in languages:massages = f'Hello, {language.title()}'print(massages)programming_languages = ['c++','python','java']greet_languages(programming_languages)

6.1   在函数中修改列表

将列表传递给函数后,函数就对其进行修改。在函数中对这个列表所做的任何修改都是 永久性 的,这让我们 能够高效地处理大量数据。 

假设有一个编程语言列表 programming_languages[],对其中的语言进行简单问候,然后将其列表中所有的元素都移到 repository_languages[] 中。

def greet_languages(programming_languages,repository_languages):'''向列表中的每位编程语言发出简单的问候'''# 对编程语言进行问候后,都将其移到 repository_languages 列表中while programming_languages:current_languages = programming_languages.pop()massages = f'Hello, {current_languages.title()}'repository_languages.append(current_languages)print(massages)def show_languages(languages):for language in languages:print(language.title())# 定义一个编程语言列表
programming_languages = ['c++','python','java','javascript','sql']# 定义一个空列表,用来存储问候后的编程语言
repository_languages = []# 定义一个函数,对编程语言进行问候
greet_languages(programming_languages,repository_languages)
print(" ")# 定义一个函数,打印问候后的编程语言
show_languages(repository_languages)
print(" ")# 打印原始列表,以证明原始列表确实没被修改
print(programming_languages)
print(" ")

6.2   禁止函数修改列表

有时候,需要 禁止函数修好列表,这时,可向函数传递列表的副本而非原件。这样,函数所做的任何修改都只影响副本,而原件丝毫不受影响。 

要将列表的副本传递给函数,可像下面这样做:

function_name( list_name[ : ] ) 

  • 切片法表示 [ : ] 创建列表的副本。
def greet_languages(programming_languages,repository_languages):'''向列表中的每位编程语言发出简单的问候'''# 对编程语言进行问候后,都将其移到 repository_languages 列表中while programming_languages:current_languages = programming_languages.pop()massages = f'Hello, {current_languages.title()}'repository_languages.append(current_languages)print(massages)def show_languages(languages):for language in languages:print(language.title())# 定义一个编程语言列表
programming_languages = ['c++','python','java','javascript','sql']# 定义一个空列表,用来存储问候后的编程语言
repository_languages = []# 定义一个函数,对编程语言进行问候
greet_languages(programming_languages[:],repository_languages)
print(" ")# 定义一个函数,打印问候后的编程语言
show_languages(repository_languages)
print(" ")# 打印原始列表,以证明原始列表确实没被修改
print(programming_languages)
print(" ")

虽然向函数传递列表的副本可保留原始列表的内容,但除非有充分的理由,否则还是应该将原始列表传递给函数。这是因为让函数使用现成的列表可避免花时间和内存创建副本,从而提高效率,在处理大型列表时尤其如此。

7.  总结

Python 列表相关知识点就总结到这里了,如果有疑问的小伙伴,评论区交流嗷~,笔者必回,我们下期再见啦 !!

【Python】列表 - 集大成篇相关推荐

  1. 【Python】字符串 - 集大成篇

    目录 1.不同语言的字符串比较 1.1.C 语言 1.2.C ++ 语言 1.2.1   C 风格字符串 1.2.2   C ++ 风格字符串 1.3.JAVA 1.4.Python 2.Python ...

  2. Linux 进阶命令 - 集大成篇

    目录 1.  grep  命令 2.  wc  命令 3.  echo  命令 4.  tail  命令 5.  su  命令 6.  sudo  命令 7.  chomd  命令 8.  chown ...

  3. 【集大成篇】数据类型( C、C++、Java )对比

    1.C 语言 数据类型 关键字 取值范围 内存占用 字符型 char -128~127 1 整 型 short -32768~32767 2 int -2147483648~2147483647 (1 ...

  4. 数组的操作-集大成篇

    目录 1.数组元素的查找 2.数组元素的插入 ①  伪代码 ②  代码 3.数组元素的删除 ①  伪代码 ②  代码 4.数组元素的检索 5.数组元素的遍历 (1)  小试牛刀:打印数组中每个元素 ① ...

  5. python基础篇大合集,进程、装饰器、列表详解篇!

    进程以及状态 1. 进程 2. 进程的状态 进程的创建-multiprocessing 1. 创建进程 2. 进程pid 3. Process语法结构如下 4. 给子进程指定的函数传递参数 5. 进程 ...

  6. python基础篇大合集,进程、装饰器、列表详解篇

    1. 进程 程序:例如xxx.py这是程序,是一个静态的 进程:一个程序运行起来后,代码+用到的资源 称之为进程,它是操作系统分配资源的基本单元. 不仅可以通过线程完成多任务,进程也是可以的 2. 进 ...

  7. 1.3 Python列表、字典、集合和JSON四种数据类型

    Applications of Deep Neural Networks with Keras 基于Keras的深度神经网络应用 著:Jeff Heaton 译:人工智能学术前沿 目录 1.Pytho ...

  8. 超强汇总:学习Python列表,只需这篇文章就够了

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 ID: 豌豆下的猫  公众号: Python猫 千里之行,始于足下 ...

  9. python基础系列之学习Python列表,只需这篇文章就够了

    千里之行,始于足下.要练成一双洞悉一切的眼睛,还是得先把基本功扎扎实实地学好.今天,本喵带大家仔细温习一下Python的列表.温故而知新,不亦说乎. 当然,温习的同时也要发散思考,因为有些看似无关紧要 ...

最新文章

  1. Pycharm同步git代码提示:Merge failed
  2. 算法 --- [队列结构]二叉树的层次遍历
  3. DevToys - 开发人员的瑞士军刀
  4. 前端学习(2957):组件之间的参数传递父传子
  5. callbackcallback()到底有什么涵义?
  6. loadrunner-3-1创建测试场景
  7. SP2010开发和VS2010专家食谱--第一章节--列表和事件接收器(6)--使用列表事件接收器...
  8. 3.0-vim编辑器和bash条件测试
  9. Hadoop2.6.0配置參数查看小工具
  10. 条形码图像生成库barcodelib使用介绍
  11. ILSVRC2012(ImageNet2012)数据集的下载及ILSVRC2012_img_val数据集的分类
  12. phpstorm运行php项目步骤
  13. ”凌寒独自开“绽放不一样的自己
  14. that was originally added here
  15. 逐飞K66核心板+逐飞DAP下载器调试方式及接线(SWD)
  16. 那些牛逼互联网公司里技术团队的博客
  17. 小程序 - K线图画法
  18. 2021-09-10 简单的音乐节奏游戏实现
  19. CompletableFuture教程
  20. word文档docx解密助手,word文档docx权限密码如何解开?

热门文章

  1. python人名查电话(字典)_Python基础练习——使用字典存储电话薄
  2. 将PSD文件导出图层
  3. 分享]基于Web开发资料专集
  4. 缓解迷茫焦虑的最好方法:用自己的方式好好生活
  5. 编程模式之观察者模式
  6. 致初学者:如何学好Python这门编程语言?
  7. 与病毒名称相似,“捏脸”游戏 ZEPETO 涉嫌窃听?...
  8. 简单粗暴理解与实现机器学习之K-近邻算法(三):距离度量、欧氏距离、曼哈顿距离、切比雪夫距离、闵可夫斯基距离、标准化距离、余弦距离、汉明距离、杰卡德距离、马氏距离
  9. File和Filelnfo类
  10. 做好这几点,安心睡个好觉