解决Python使用列表副本的问题

要使用一个列表的副本,要用切片进行列表复制,这样会形成两个独立的列表。

切记不要将列表赋值给一个列表,因为这样并不能得到两个列表。

1、使用赋值语法创建列表副本的问题

下边就将列表赋值,验证是否形成独立的列表:

squares = list(range(1, 11))

print('squares原始值为:', end='')
print(squares)

# 使用列表赋值
numbers_squares = squares
print('numbers_squares所有元素为:', end='')
print(numbers_squares)

# 为squares列表添加数字100
squares.append(100)
print('添加数字后的squares值:', end='')
print(squares)

# 为squares列表添加数字200
numbers_squares.append(200)
print('添加数字后的number_squares值:', end='')
print(numbers_squares)

输出为:

squares原始值为:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers_squares所有元素为:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
添加数字后的squares值:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100]
添加数字后的number_squares值:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100, 200]

可以看到,number_squares列表值中,也有数字100,说明赋值并没有形成两个独立的列表。赋值只是让Python新变量number_squares关联到包含在squares中的列表,所以这两个列表指向同一个列表。

2、列表副本正确方法:使用切片复制列表副本

下边的列子,创建一个1-10的数字列表,用切片进行列表复制形成两个独立的列表

squares = list(range(1, 11))

print('squares原始值为:', end=' ')
print(squares)

# 使用切片复制squares列表
numbers_squares = squares[:]
print('numbers_squares所有元素为:', end=' ')
print(numbers_squares)

输出为:

squares原始值为: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers_squares所有元素为: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

为了验证确实形成了两个独立的列表,在每个列表上加数字,核实每个列表都记录了加的数字

squares = list(range(1, 11))

print('squares原始值为:', end='')
print(squares)

# 使用切片复制squares列表
numbers_squares = squares[:]
print('numbers_squares所有元素为:', end='')
print(numbers_squares)

# 为squares列表添加数字100
squares.append(100)
print('添加数字后的squares值:', end='')
print(squares)

# 为squares列表添加数字200
numbers_squares.append(200)
print('添加数字后的number_squares值:', end='')
print(numbers_squares)

输出为:

squares原始值为:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
numbers_squares所有元素为:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
添加数字后的squares值:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100]
添加数字后的number_squares值:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 200]

可以看到,确实100和200分别加入到相应列表中。

以上这篇解决Python使用列表副本的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Python: 传递列表副本方式

    有时候,需要禁止函数修改列表. 为解决这个问题,可向函数传递列表的副本而不是原件;这样函数所做的任何修改都只影响副本,而丝毫不影响原件. 要将列表的副本传递给函数,可以像下面这样做: function_name(list_name[:]) 切片表示法 [:] 创建列表的副本. 以上这篇Python: 传递列表副本方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • 解决Python使用列表副本的问题

    要使用一个列表的副本,要用切片进行列表复制,这样会形成两个独立的列表. 切记不要将列表赋值给一个列表,因为这样并不能得到两个列表. 1.使用赋值语法创建列表副本的问题 下边就将列表赋值,验证是否形成独立的列表: squares = list(range(1, 11)) print('squares原始值为:', end='') print(squares) # 使用列表赋值 numbers_squares = squares print('numbers_squares所有元素为:', end=

  • 解决python给列表里添加字典时被最后一个覆盖的问题

    如下所示: >>> item={} ; items=[] #先声明一个字典和一个列表,字典用来添加到列表里面 >>> item['index']=1 #给字典赋值 >>> items.append(item) >>> items [{'index': 1}] #添加到列表里面复合预期 >>> item['index']=2 #现在修改字典 >>> item {'index': 2} #修改成功 &g

  • 解决python文件字符串转列表时遇到空行的问题

    文件内容如下: Alex 100000 Rain 80000 Egon 50000 Yuan 30000 #此处有一个空行! 现在看如何处理并转成列表! salary_info = open("salaryinfo.txt", "r+", encoding="UTF-8") salary_info_list = [] for line in salary_info.readlines(): if line == '\n': pass else:

  • 解决python字典对值(值为列表)赋值出现重复的问题

    可能很少有人遇到这个问题,网上也没找到,这里记录一下,希望也可以帮到其他人. 问题描述:假设有一个字典data,其键不定,可能随时添加键(这不是关键),某一个键下面对应的值为一个长度为10的list,初始化为0,然后我想修改某些键下面的列表中的某一个值,比如data有一个键'k',对应的值为[0,0,0,0,0,0,0,0,0,0],现在我想把键'k'对应的列表的第三个数改成3,即[0,0,3,0,0,0,0,0,0,0],可是意外的事情发生了,如果data还有一个键'k1',假设其值为[0,0

  • 解决Python列表字符不区分大小写的问题

    有时候,我们需要检测一个元素是否已经存在列表中,并且不区分大小写,如:列表已有元素Mary,那我们想认为MARY也已经被占用.这个例子在实际编程中会用到很多,比如保证网站注册用户独一无二.邮件姓名独一无二等等. 下边列子将实现使得列表元素独一无二功能: 创建一个列表有若干个元素,命名为current_users. 再创建一个包含若干元素的列表,命名为new_users,bi确保其中有一两个元素包含在列表current_users中. 遍历new_users列表中元素,检测是否被使用.如果是,则打

  • Python输出列表(List)不带中括号和引号的问题及解决方法

    目录 正常python输出列表List时,会自动加上中括号和引号.例如: >>> list1 = ['a', 'b', 'c', 'd'] >>> list1 ['a', 'b', 'c', 'd'] 解决方法一:使用join() >>> print(' '.join(list1)) a b c d Python join() 方法用于将序列中的元素以指定的字符连接生成一个新的字符串. >>> list1 = ['a', 'b', '

  • Python统计列表中的重复项出现的次数的方法

    本文实例展示了Python统计列表中的重复项出现的次数的方法,是一个很实用的功能,适合Python初学者学习借鉴.具体方法如下: 对一个列表,比如[1,2,2,2,2,3,3,3,4,4,4,4],现在我们需要统计这个列表里的重复项,并且重复了几次也要统计出来. 方法1: mylist = [1,2,2,2,2,3,3,3,4,4,4,4] myset = set(mylist) #myset是另外一个列表,里面的内容是mylist里面的无重复 项 for item in myset: prin

  • Python中列表元素转为数字的方法分析

    本文实例讲述了Python中列表元素转为数字的方法.分享给大家供大家参考,具体如下: 有一个数字字符的列表: numbers = ['1', '5', '10', '8'] 想要把每个元素转换为数字: numbers = [1, 5, 10, 8] 用一个循环来解决: new_numbers = []; for n in numbers: new_numbers.append(int(n)); numbers = new_numbers; 有没有更简单的语句可以做到呢? 1. numbers =

  • Python对列表排序的方法实例分析

    本文实例讲述了Python对列表排序的方法.分享给大家供大家参考.具体分析如下: 1.sort()函数 sort()函数使用固定的排序算法对列表排序.sort()函数对列表排序时改变了原来的列表,从而让其中的元素能按一定的顺序排列,而不是简单的返回一个已排序的列表副本. 注意sort()函数改变原来的列表,函数返回值是空值即None.因此,如果需要一个已排好序的列表副本,同时又要保留原有列表不变的时候,就不能直接简单的使用sort()函数.为了实现上述功能使用sort()的方法是:先获取列表X的

随机推荐