广告位联系
返回顶部
分享到

Python学习之列表常用方法

python 来源:互联网 作者:秩名 发布时间:2022-03-05 07:58:27 人浏览
摘要

列表(元组)基本操作符回顾 len()函数在列表与元组上的使用 示例如下: 1 2 3 4 5 6 names = [Neo, Lily, Jack] length = len(names) print(length) # 执行结果如下 # 3 注意:len()函数可以计算除了数字类型之

列表(元组)基本操作符回顾

len()函数在列表与元组上的使用

示例如下:

1

2

3

4

5

6

names = ['Neo', 'Lily', 'Jack']

length = len(names)

print(length)

 

# 执行结果如下

# >>> 3

注意:len()函数可以计算除了数字类型之外的其他所有数据类型的长度

列表(元组)之间的累加与乘法

示例如下:

1

2

3

4

5

6

7

8

9

10

11

names = ['Neo', 'Lily', 'Jack']

new_names_01 = names + names

print(new_names_01)

 

names = ['Neo', 'Lily', 'Jack']

new_names_01 = names * 2

print(new_names_01)

 

# 输出结果如下:

# >>> ['Neo', 'Lily', 'Jack', 'Neo', 'Lily', 'Jack']

# >>> ['Neo', 'Lily', 'Jack', 'Neo', 'Lily', 'Jack']

in 和 not in 在列表(元组)中的用法

in :判断某个成员(元素)是否在该数据结构中,返回结果为布尔值。

not in :判断某个成员(元素)是否不在该数据结构中,返回结果为布尔值。

示例如下:

1

2

3

4

5

6

7

names = ['Neo', 'Lily', 'Jack']

print(bool('Adam' in names))

print(bool('Adam' not in names))

 

# 执行结果如下:

# >>> False

# >>> True

列表常用方法

append() 函数

append()函数的功能:将一个元素添加当当前列表中

append()函数的用法:list_append(new_item) ,new_item为添加进列表的新的元素(成员)

append()函数的注意事项:

  • 被添加的元素止水被添加到末尾
  • append() 函数是在原有列表的基础上进行添加,不需要额外的添加新的变量

示例如下:

1

2

3

4

5

6

7

names = ['Neo']

names.append('Jack')

 

print(names)

 

# 执行结果如下:

# >>> ['Neo', 'Jack']

1

2

3

4

5

6

7

8

9

10

11

12

13

a = [1, 2, 3]

b = [4, 5, 6]

 

print(a.append(1))

print(a)

 

a.append(b)

print(a)

 

# 执行结果如下:

# >>> [1, 2, 3, 1]

# >>> Node

# >>> [1, 2, 3, 1, [4, 5, 6]]      a.append(b) 会将整个列表当做一个元素添加进去

这里我们注意到 print(a.append(1)) 返回的是 Node ,这是为什么呢?

原因是append方法只是在恰当的位置修改原来的列表!也就是说,不是返回一个列表,而只是修改原来的列表,所以如果用 等式 输出的话,返回是None 。去掉返回值即可得到新的列表!

看下面两个示例:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

# 原代码:

 

list= [1,2,3,4]

list= list.append(5)

print(list)

 

# 输出:

# >>> None

 

 

# 修改后代码

 

list= [1,2,3,4]

list.append(5)

print(list)

 

# 输出:

# >>> 1,2,3,4,5

insert() 函数

insert() 函数的功能:讲一个元素添加到列表的指定位置中

insert() 函数的用法:list.insert(index, new_item) , index为新的元素放在的新的位置(数字,下标位),new_item为填的新成员(元素)

insert() 函数与append()函数的区别:

  • insert() 函数可以将元素添加至任意的位置,而append()函数只能将元素添加之末尾。
  • 如果insert() 函数传入的位置不存在,则将新的元素添加至列表结尾

示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

friuts = ['橘子', '香蕉', '火龙果']

friuts.insert(1, '苹果')

 

print(friuts)

 

# 执行结果如下:

# >>> ['橘子', '苹果', '香蕉', '火龙果']

 

 

friuts.insert(10, '鸭梨')

 

print(friuts)

 

# 执行结果如下:

# >>> '橘子', '苹果', '香蕉', '火龙果', '鸭梨']

count() 函数

count() 函数的功能:返回列表(元组)中某个成员(元素)的个数

count() 函数的用法:inttype = list.count(item) , item为想要查询的个数

count() 函数的注意事项:如果查询的成员(元素)不存在,则返回 0;列表只会检查完整元素是否存在需要计算的内容。

示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

friuts = ['橘子', '香蕉', '火龙果', '香蕉', '苹果']

count = friuts.count('香蕉')

print('friuts 列表中香蕉出现的次数为 ' + str(count) + ' 次')

 

# 执行结果如下:

# >>> friuts 列表中香蕉出现的次数为 2 次

 

 

# 注意事项:如果查询的成员(元素)不存在,则返回 0;列表只会检查完整元素是否存在需要计算的内容。

friuts = ['橘子', '香蕉', '火龙果', '香蕉', '苹果']

count = friuts.count('香')

print('friuts 列表中\'香\'出现的次数为 ' + str(count) + ' 次')

 

# 执行结果如下:

# >>> friuts 列表中'香'出现的次数为 0 次

remove() 函数

remove() 函数的功能:删除列表中的某个元素

remove() 函数的用法:list_remove = list.remove(item) , item为想要删除的元素

remove() 函数的注意事项:

  • 如果删除的成员(元素)不存在,则会直接报错
  • 如果被删除的元素有多个,只会删除第一个
  • remove() 函数不会返回一个新的列表,而是在原有的列表中对成员(元素)执行删除动作

示例如下:

1

2

3

4

5

6

books = ['Python', 'Java', 'PHP']

books.remove('PHP')

print(books)

 

# 执行结果如下:

# >>> ['Python', 'Java']

Python内置函数 del

del 函数的功能:将变量完全删除(即踢打内存管家将变量从内存中删除)

示例如下:

1

2

3

4

5

6

books = ['Python', 'Java', 'PHP']

books.del()

print(books)

 

# 执行结果如下:

# >>> NameError: name 'books' is not defined. Did you mean: 'bool'?

reverse() 函数

reverse() 函数的功能:对当前列表顺序的反转

reverse() 函数的用法: list = list.reverse() , 无参数传递

示例如下:

1

2

3

4

5

6

books = ['Python', 'Java', 'PHP']

books.reverse()

print(books)

 

# 执行结果如下:

# >>> ['PHP', 'Java', 'Python']

sort() 函数

sort() 函数的功能:对当前列表按照一定的规律进行排序

sort() 函数的用法: list = list.sort(cmp=Node, key=Node, reverse=False)

  • cmp —> 可选参数,制定排序方案的函数
  • key —> 参数比较
  • reverse —> 排序规则,reverse = True (降序);reverse = False (升序),升序是默认状态
  • 这里的 cmp 和 key涉及到函数的知识点,后续的函数相关章节会详细介绍

sort() 函数的注意事项:列表中的元素类型必须相同,否则会报错,无法排序

示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

books = ['Python', 'C', 'PHP', 'Go', 'C++', 'Java']

books.sort()

print(books)

 

# 执行结果如下:

# >>> ['C', 'C++', 'Go', 'Java', 'PHP', 'Python']

 

int_lists = [79, 6, 99, 46, 30]

int_lists.sort(reverse=True)

print(int_lists)

 

# 执行结果如下:

# >>> [99, 79, 46, 30, 6]

 

test_list = ['Hello', 666, 3.14, True]

test_list.sort()

print(test_list)

 

# 执行结果如下:

# >>> TypeError: '<' not supported between instances of 'int' and 'str'

clear() 函数

clear() 函数的功能:将当前列表的数据清空

clear() 函数的用法: list = list.clear() , 该函数无参数,无返回值

示例如下:

1

2

3

4

5

6

7

8

int_list = [79, 6, 99, 46, 30]

int_list.clear()

print(int_list)

print(len(int_list))

 

# 执行结果如下:

# >>> []

# >>> 0

思考一个问题:当我们使用 clear() 函数 清空一个列表时,和重新命名一个空的列表,哪个更节省资源?

其实相对来说使用 clear() 函数更节省资源;当我们创造一个变量的时候,会占用一个内存地址,使用该变量之后该变量地址则会被内存管家清空。再次使用时,又会生成新的内存地址,这个过程也是需要消耗资源的,只是因为速度处理的比较快我们无法感知罢了。

copy() 函数

copy() 函数的功能:将当前列表复制一份新的列表,虽然新的列表虽与旧的列表的内容相同,但是内存地址不同

copy() 函数的用法:list = list.copy() ,该函数无参数,返回一个与旧列表一模一样的列表

copy() 函数与 2次赋值 的区别:

  • 二次赋值的变量与原始变量共享相同的内存地址空间
  • copy() 函数创建的新列表与原始列表不是一个内存空间,新列表的变量值不因原列表变量的值的变更而变更
  • copy() 函数属于浅拷贝

示例如下:

1

2

3

4

5

6

7

8

9

old_list = [1, 2, 3, 4, 5]

new_list = old_list.copy()

 

print(new_list)

print("\'old_list\'内存地址为:" + str(id(old_list)), "\'new_list\'内存地址为:" + str(id(new_list)))

 

# 执行结果如下:

# >>> [1, 2, 3, 4, 5]

# >>> 'old_list'内存地址为:2175764462080 'new_list'内存地址为:2175767330496

copy() 函数与 2次赋值 的区别示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

old_list = [1, 2, 3, 4, 5]

new_list_01 = old_list

new_list_02 = old_list.copy()

 

old_list.append(6)

 

print(new_list_01)

print(new_list_02)

 

# 执行结果如下:

# >>> [1, 2, 3, 4, 5, 6]

# >>> [1, 2, 3, 4, 5]

浅拷贝

什么是浅拷贝?

通俗的说,我们有一个列表 a,列表里的元素还是列表。当我们拷贝出新列表 b 后,无论是 a 还是 b 的内部的列表中的数据发生了变化后,相互之间都会受到影响。这就是浅拷贝。

浅拷贝示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

old_list = [[1, 2, 3], [4, 5]]

new_list = old_list.copy()

 

old_list[1].append(6)

print(str(old_list), "--------," + str(new_list))

 

# 执行结果如下:

# >>> [[1, 2, 3], [4, 5, 6]] --------,[[1, 2, 3], [4, 5, 6]]

 

 

new_list[0].append(0)

print(str(old_list), "--------," + str(new_list))

 

# 执行结果如下:

# >>> [[1, 2, 3, 0], [4, 5, 6]] --------,[[1, 2, 3, 0], [4, 5, 6]]

深拷贝

什么是深拷贝?

深拷贝不仅对列表第一层进行了 copy ,对深层的数据也进行了 copy, 原始变量与新变量之间完全不共享数据,这就是深拷贝。

深拷贝示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

old_list_deepcopy = [[1, 2, 4], [4, 5]]

new_list_deepcopy = copy.deepcopy(old_list_deepcopy)

 

old_list_deepcopy[1].append(6)

print(str(old_list_deepcopy), "--------," + str(new_list_deepcopy))

 

# 执行结果如下:

# >>> [[1, 2, 4], [4, 5, 6]] --------,[[1, 2, 4], [4, 5]]

 

 

new_list_deepcopy[0].append(0)

print(str(old_list_deepcopy), "--------," + str(new_list_deepcopy))

 

# 执行结果如下:

# >>> [[1, 2, 4], [4, 5, 6]] --------,[[1, 2, 4, 0], [4, 5]]

关于浅拷贝与深拷贝,我们再来看看对 数字类型 和 字符串类型又是怎样的,示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

str_1 = "python"

print("str_1: ", str_1, id(str_1))

 

str_2 = str_1

print("str_2: ", str_2, id(str_2))

 

str_3 = copy.copy(str_2)

print("str_3: ", str_3, id(str_3))

 

str_4 = copy.deepcopy(str_1)

print("str_4: ", str_4, id(str_4))

 

# 执行结果如下:

# >>> str_1:  python 140222883317104

# >>> str_2:  python 140222883317104

# >>> str_3:  python 140222883317104

# >>> str_4:  python 140222883317104

可以看出,数字类型与字符串类型的浅拷贝与深拷贝是没有区别的,都是指向的同意内存地址,所以深拷贝与浅拷贝是没有意义的

extend() 函数

extend() 函数的功能:将其他列表或元组中的元素一次性的导入到当前列表中

extend() 函数的用法:list = list.extend(iterable) ,iterable 代表列表或元组,该函数无返回值。

示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

students = ['Neo', 'Jack', 'Lily']

new_students = ('Lilei', 'Lily')

print(id(students))

 

# 执行结果如下:

# >>> 2032966498816

 

students.extend(new_students)

 

print(students)

print(id(students))

 

# 执行结果如下:

# >>> ['Neo', 'Jack', 'Lily', 'Lilei', 'Lily']        相同的成员(元素)并不会覆盖掉

# >>> 2032966498816

小练习:完成列表合并功能

例如给出两个列表[1, 3, 5, 7, 9]和[2, 4, 6, 8, 10],最终合并为[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

1

2

3

4

5

6

7

8

9

10

11

12

13

14

list_1 = [1, 3, 5, 7, 9]

list_2 = [2, 4, 6, 8, 10]

list_1.extend(list_2)

print(list_1)

 

# 执行结果如下:

# >>> [1, 3, 5, 7, 9, 2, 4, 6, 8, 10]

 

 

list_1.sort()

print(list_1)

 

# 执行结果如下:

# >>> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


版权声明 : 本文内容来源于互联网或用户自行发布贡献,该文观点仅代表原作者本人。本站仅提供信息存储空间服务和不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权, 违法违规的内容, 请发送邮件至2530232025#qq.cn(#换@)举报,一经查实,本站将立刻删除。
原文链接 : https://blog.csdn.net/weixin_42250835/article/details/123153230
相关文章
  • Python Django教程之实现新闻应用程序

    Python Django教程之实现新闻应用程序
    Django是一个用Python编写的高级框架,它允许我们创建服务器端Web应用程序。在本文中,我们将了解如何使用Django创建新闻应用程序。 我们将
  • 书写Python代码的一种更优雅方式(推荐!)

    书写Python代码的一种更优雅方式(推荐!)
    一些比较熟悉pandas的读者朋友应该经常会使用query()、eval()、pipe()、assign()等pandas的常用方法,书写可读性很高的「链式」数据分析处理代码
  • Python灰度变换中伽马变换分析实现

    Python灰度变换中伽马变换分析实现
    1. 介绍 伽马变换主要目的是对比度拉伸,将图像灰度较低的部分进行修正 伽马变换针对的是对单个像素点的变换,也就是点对点的映射 形
  • 使用OpenCV实现迷宫解密的全过程

    使用OpenCV实现迷宫解密的全过程
    一、你能自己走出迷宫吗? 如下图所示,可以看到是一张较为复杂的迷宫图,相信也有人尝试过自己一点一点的找出口,但我们肉眼来解谜
  • Python中的数据精度问题的介绍

    Python中的数据精度问题的介绍
    一、python运算时精度问题 1.运行时精度问题 在Python中(其他语言中也存在这个问题,这是计算机采用二进制导致的),有时候由于二进制和
  • Python随机值生成的常用方法

    Python随机值生成的常用方法
    一、随机整数 1.包含上下限:[a, b] 1 2 3 4 import random #1、随机整数:包含上下限:[a, b] for i in range(10): print(random.randint(0,5),end= | ) 查看运行结
  • Python字典高级用法深入分析讲解
    一、 collections 中 defaultdict 的使用 1.字典的键映射多个值 将下面的列表转成字典 l = [(a,2),(b,3),(a,1),(b,4),(a,3),(a,1),(b,3)] 一个字典就是一个键对
  • Python浅析多态与鸭子类型使用实例
    什么多态:同一事物有多种形态 为何要有多态=》多态会带来什么样的特性,多态性 多态性指的是可以在不考虑对象具体类型的情况下而直
  • Python字典高级用法深入分析介绍
    一、 collections 中 defaultdict 的使用 1.字典的键映射多个值 将下面的列表转成字典 l = [(a,2),(b,3),(a,1),(b,4),(a,3),(a,1),(b,3)] 一个字典就是一个键对
  • Python淘宝或京东等秒杀抢购脚本实现(秒杀脚本

    Python淘宝或京东等秒杀抢购脚本实现(秒杀脚本
    我们的目标是秒杀淘宝或京东等的订单,这里面有几个关键点,首先需要登录淘宝或京东,其次你需要准备好订单,最后要在指定时间快速
  • 本站所有内容来源于互联网或用户自行发布,本站仅提供信息存储空间服务,不拥有版权,不承担法律责任。如有侵犯您的权益,请您联系站长处理!
  • Copyright © 2017-2022 F11.CN All Rights Reserved. F11站长开发者网 版权所有 | 苏ICP备2022031554号-1 | 51LA统计