Python学习记——(6)列表、字符串、深浅拷贝

本文详细介绍Python中列表的各种操作,包括索引、切片、常用函数、方法及列表推导式的使用,并通过实例演示如何利用这些功能高效处理数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

列表的索引操作:

  语法:列表[整数表达式]

  用法:等同于字符串的索引,索引分正向索引和反向索引,规则与字符串规则完全相同

  示例:

    L = list("ABCD")

    print(L[1])  # B

列表的索引赋值

  列表是可变的,可以通过索引赋值改变列表中的元素

示例

  L = [1, 2, 3, 4]

  L[2] = 3.1

  print(L)

列表的切片

  语法:列表[:]

     列表[::]

  说明:列表的切片取值返回一个列表,规则等同于字符串切片规则

  示例:

    x = list(range(10))

    y = x[1:9:2]  # 奇数

    y = x[::]     # 复制x列表

列表的切片赋值

  语法:列表[切片slice] = 可迭代对象

  作用:可以改变原列表的排列,可以插入数据和修改数据

     可以用切片改变列表对应的元素的值

  说明:切片的赋值运算符(=)的右侧必须是一个"可迭代对象"

  示例:

    L = [2, 3, 4]

    L[1:2] = [3.1, 3.2]  # L = [2, 3.1, 3.2, 4]

    L[:1] = [1.1, 2.2]  # L=[1.1, 2.2, 3.1, 3.2, 4]

    L = [2, 3, 4]

    L[2:] = []

    L = [2, 3, 4]

    L[:0] = [0, 1]

    L = [2, 3, 4]

    L[3:] = [5, 6, 7]

    L = [2, 3, 4]

    L[1:2] = "ABC"  # L = [2, 'A', 'B', 'C', 4]

    L = [1, 2]

    L[2:] = range(3, 10)  # L = [1,2,3,4....9]

切片注意事项:对于步长不等1的切片赋值,赋值运算符的右侧的可迭代对象提供的数据元素的个数一定要等于切片切出的段数

例如:L = [1, 2, 3, 4, 5, 6]

    L[::2] = 'ABC'  # 正确

    L[::2] = 'ABCDE' # 错误

del 语句: del 可以用来删除列表元素

  语法:del 列表[索引] del 列表[切片]

  示例:

    L = [1, 2, 3, 4, 5, 6]

    del L[1]

    del L[2]

    del L[-1]

    L = [1, 2, 3, 4, 5, 6]

    del L[::2]

练习: 已知有列表:L = [3, 5]用索引和切片操作将原列表L 改变为:L = [1, 2, 3, 4, 5, 6]将原列表反转, 删除最后一个元素打印此列表:print(L)  # [6, 5, 4, 3, 2]

python3中常用的序列函数

  len(x)  返回序列的长度

  max(x)  返回序列的最大值元素

  min(x)  返回序列中最小值元素

  sum(x)  返回序列中所有元素的和(元素必须是数字)

  any(x)  真值测试, 如果列表中的其中一个元素 为真值,则返回True

  all(x)  真值测试, 如果列表中的所有元素都为真值, 则返回True,否则返回False

  示例:

    L = [1, 7, 0, 3, 2]

    print(len(L))  # 5

    print(max(L))  # 7

    print(min(L))  # 0

    print(sum(L))  # 13

    print(any(L))  # True

    print(all(L))  # False

练习:

  1. 输入三个数存于列表中,打印这三个数的最大值,最小值和平均值

  2. 写程序,让用户循环输入一些整数,当输入-1时结束输入,将这些整数存于列表L中

     1) 打印您共输入了几个有效的数?

     2) 打印您输入的数有最大数是多少?

     3) 打印您输入的数的最小数是多少?

     4) 打印您输入的这些数的平均值

python3中常用的列表方法(method)

详见:>>> help(list)

方法

意义

L.index(v [, begin[, end]])

返回对应元素的索引下标, begin为开始索引,end为结束索引,当 value 不存在时触发ValueError错误

L.insert(index, obj)

将某个元素插放到列表中指定的位置

L.count(x)

返回列表中元素的个数

L.remove(x)

从列表中删除第一次出现在列表中的值

L.copy()

复制此列表(只复制一层,不会复制深层对象)

L.append(x)

向列表中追加单个元素

L.extend(lst)

向列表追加另一个列表

L.clear()

清空列表,等同于 L[:] = []

L.sort(reverse=False)

将列表中的元素进行排序,默认顺序按值的小到大的顺序排列

L.reverse()

列表的反转,用来改变原列表的先后顺序

L.pop([index])

删除索引对应的元素,如果不加索引,默认删除最后元素,同时返回删除元素的引用关系

 

练习:

  写一个程序。输入很多个正整数,当输入小于零的数时结束输入

    1) 打印这些数的和

    2) 打印出这些数中最大的一个数

    3) 打印这些数中第二大的一个数

    4) 删除最小的一个数

sorted 函数:用于生成一个排序后的列表

   格式:sorted(iterable, reverse=False)

reversed(seq)  返回原序列反序的可迭代对象

示例:

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

  L2 = sorted(L)  # L2 = [1, 3, 5, 7, 9]

  L3 = sorted(L, reverse=True)  # L3 = [9, 7, 5, 3, 1]

  for x in reversed(L):

      print(x)  # 3 1 5 9 7

字符串的文本解析方法 split 和 join方法

  S.split(sep=None)  将字符串使用sep作为分隔符分割S字符串,返回分割后的字符串列表,当不给定参数时默认用空白字符作为分隔符分割

  S.join(iterable)  用可迭代对象中提供的字符串,返回一个中间用S进行分隔的字符串

  示例:

    s = 'Beijing is capital'

    L = s.split(' ')  # L = ['Beijing', 'is', 'capital']

    L = ["C:", "Windows", "System32"]

    s = '\\'.join(L)  #s=r"C:\Windows\System32"

深拷贝 deep copy 和浅拷贝 shallow copy

浅拷贝 shallow copy

  L = [3.1, 3.2]

  L1 = [1, 2, L]

  L2 = L1.copy()  # 浅拷贝,只复制一层

  print(L1)  # [1, 2, [3.1, 3.2]]

  print(L2)  # [1, 2, [3.1, 3.2]]

  L[0] = 3.14

  print(L1)  # [1, 2, [3.14, 3.2]]

  print(L2)  # [1, 2, [3.14, 3.2]]

  说明:浅拷贝是指在复制过程中,只复制一层变量,不会复制深层变量绑定的对象的复制过程

深拷贝:对所有可变对象进行层层复制,实现对象的各自独立

  :

  import copy  # 导入复制模块

  L = [3.1, 3.2]

  L1 = [1, 2, L]

  L2 = copy.deepcopy(L1)  # 实现深拷贝

  print(L1)  # [1, 2, [3.1, 3.2]]

  print(L2)  # [1, 2, [3.1, 3.2]]

  L[0] = 3.14

  print(L1)  # [1, 2, [3.14, 3.2]]

  print(L2)  # [1, 2, [3.1, 3.2]] #此列表不受影响

列表推导式 list comprehesion

  列表推导式是用可迭代对象依次生成带有多个元素的列表的表达式

  作用:用简易方法生成列表

  语法:[表达式 for 变量 in 可迭代对象]

    [表达式 for 变量 in 可迭代对象 if 真值表达式]

  示例:

    # 生成一个列表,此列表内的数值是1~9的方平

    L = [x ** 2 for x in range(1, 10)]

    # 以前的方法:

    L = []

    for x in range(1, 10):

        L.append(x ** 2)

练习:用列表推导式生成 1 ~ 100 内奇数的列表

   :

     1. [x * 2 + 1 for x in range(50)]

     2. [x for x in range(1, 100, 2)]

     # 用带有if的列表推导式

       [x for x in range(100) if x % 2 ==1]

列表推导式的嵌套:

  语法:[表达式

       for 变量1 in 可迭代对象1 if 真值表达式1

          for 变量2 in 可迭代对象2 if 真值表达式2

             ...]

示例:用字符串"ABC" 和 "123" 生成如下列表:['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3']L = [x + y for x in "ABC" for y in "123"]

练习:

  1. 已知用户输入的字符串是以逗号分隔开的数据如:s = '100,200,300,500,800'试用程序算法将其转化为数字的列表L = [100, 200, 300, 500, 800]

  2. 有一些数存在于列表中,如:L = [1, 3, 2, 1, 6, 4, 2, .... 98, 82]将列表中的数字存入到另一个列表L2中,要求:重复出现多次的数字只在列表L2中保留一份

  3. 生成前40个斐波那契数(Fibonacci)1  1  2  3  5  8  13 ....将这40个数保存在列表中斐波那契数是 前两个是1, 从第三个起是前面两个数的和

### 回答1: 好的,下面是回复: Python计算思维训练——字典字符串(二)是一篇关于Python编程语言中字典字符串的进阶应用的文章。在这篇文章中,读者将学习如何使用Python中的字典字符串来解决更加复杂的问题。文章中包含了许多实用的示例练习,可以帮助读者更好地理解掌握Python中字典字符串的使用方法。如果你正在学习Python编程语言,那么这篇文章一定会对你有所帮助。 ### 回答2: Python 计算思维是指借助 Python 编程语言来进行计算思维训练,掌握一系列 Python 基础概念编程技巧,提高计算思维能力的一种训练方式。其中,字典字符串Python 中比较重要的两个数据类型之一,也是 Python 计算思维训练中必须掌握的内容。 一、字典 字典是 Python 中一种非常常用的数据类型,也是 Python 中唯一的映射类型。字典以键-值(key-value)对的形式存储数据,可以通过键快速查找与获取值。字典的定义方式是用 {} 包含键-值对,用 : 将键值分隔开,多个键-值对之间用 , 分隔。例如: a = {'name': 'Alice', 'age': 20, 'gender': 'female'} print(a['name']) # 输出:Alice 字典中也可以包含嵌套字典,即字典的值也可以是字典。例如: b = {'name': 'Bob', 'contacts': {'phone': '123456', 'email': 'bob@example.com'}} print(b['contacts']['email']) # 输出:bob@example.com 字典的常用操作包括访问键-值对、添加键-值对、删除键-值对、修改键-值对等。例如: a = {'name': 'Alice', 'age': 20, 'gender': 'female'} print(a.keys()) # 输出:dict_keys(['name', 'age', 'gender']) print(a.values()) # 输出:dict_values(['Alice', 20, 'female']) a['school'] = 'Tsinghua University' print(a) # 输出:{'name': 'Alice', 'age': 20, 'gender': 'female', 'school': 'Tsinghua University'} del a['age'] print(a) # 输出:{'name': 'Alice', 'gender': 'female', 'school': 'Tsinghua University'} a['name'] = 'Carol' print(a) # 输出:{'name': 'Carol', 'gender': 'female', 'school': 'Tsinghua University'} 二、字符串 字符串Python 中的一个基础数据类型,通常用来表示文本或字符序列。字符串可以用单引号 '' 或双引号 "" 包含,也可以用三引号 ''' 或 """ 包含多行字符串。例如: a = 'Hello, world!' b = "I'm Alice." c = '''Hello, world!''' print(a, b, c, sep='\n') # 输出:Hello, world! # I'm Alice. # Hello, # world! 字符串的常用操作包括字符串拼接、字符串切片、字符串格式化等。例如: a = 'Hello, ' b = 'world!' print(a + b) # 输出:Hello, world! print(a * 3) # 输出:Hello, Hello, Hello, c = 'Tom is a boy.' print(c[4:9]) # 输出:is a d = 'My name is {0}, I am {1} years old.'.format('Alice', 20) print(d) # 输出:My name is Alice, I am 20 years old. 综上所述,字典字符串Python 中重要的数据类型,掌握了它们的使用方法常用操作,可以更好地进行 Python 计算思维训练,提高编程能力学习效率。 ### 回答3: Python计算思维训练是一系列的Python编程基础课程,着重训练学生的计算思维能力。在第二课,我们学习了字典字符串。 首先,让我们简要介绍字典。字典是Python中非常重要的数据类型,它允许我们存储键值对。每个键必须唯一,并且可以使用不同类型的键(例如,字符串、整数浮点数)。字典是一种无序的数据结构,意味着字典中的元素没有顺序。在Python中,可以使用花括号来创建字典,如: {'键1': '值1', '键2': '值2' }。 接下来,让我们深入了解Python字符串的处理。字符串Python中的一种基本数据类型,表示一系列的字符。在Python中,字符串可以通过单引号、双引号或三引号来声明。字符串也可以包含数字、字母符号。可以对字符串进行许多不同的操作,如连接、分割、修剪等。我们还可以使用Python字符串函数来完成各种各样的操作,如查找、替换格式化等。 学习了字典字符串后,我们可以更高效地完成各种编程任务。例如,在字典中存储信息,可以使我们更快速地索引查找数据;使用字符串函数可以使我们更轻松地处理文本。此外,Python中的许多库模块也使用字典字符串来处理数据文本。 总之,学习Python中的字典字符串是编程学习的重要一步。它们为我们提供了强大的工具集,可以帮助我们更轻松地处理各种编程任务,从而提高我们的编程能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值