python里面的列表复制

python里面的列表复制,第1张

strLst 里最后一个元素本身是一个可修改的list,copyLst最后一个元素引用的也是这个对象,修改它当然也会导致原strLst 的最后一个对象内容发生变化。 而strLst 前几个元素是字符串 (不可改对象),你没有办法修改他们,copyLst[1] = 'zzz' 这样的语句只是让copyLst[1] 引用了不同的对象。

关于可修改 (mutable) 对象和不可修改对象(immutable)使用上的区别,建议你再去翻翻python的文档。

针对你的list特点,可以用下面这个简单的解决方法(注: 不适用于其他list 复制,比如list的某个元素本身又是一个包含有list的list):

import types

strLst=['hi', 'mom', 'dad', ['xxx', 'yyy']]

copyLst = [x[:] if type(x) is typesListType else x for x in strLst]

此时修改copyLst 不会影响原始list

Python中列表常见的方法有哪些?

Python列表定义:按特定顺序排列的元素组成。在Python中,用方括号[]来表示列表,并用逗号来分隔其中的元素。Python列表是编程中很常见的数据类型 。

列表是一种可修改的集合类型,其元素可以是数字、string等基本类型,也可以是列表、元组、字典等集合对象,甚至可以是自定义的类型。其定义方式如下:>>> nums = [1,2,3,4]>>> type(nums)>>> print nums[1, 2, 3, 4]>>> strs = ["hello","world"]>>> print strs['hello', 'world']>>> lst = [1,"hello",False,nums,strs]>>> type(lst)>>> print lst[1, 'hello', False, [1, 2, 3, 4], ['hello', 'world']]

下面我们来看一下列表中有哪些常见的方法:count():统计某个元素在列表中出现的次数。index():从列表中找出某个值第一个匹配项的索引位置。append():在列表末尾添加新对象。extend():在列表末尾一次性追加另一个序列的多个值。insert():在列表的指定位置插入对象。pop():移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。remove():移除列表中某个值的第一个匹配项。reverse():将列表中的元素反向,不重新拷贝一个列表。reversed():将列表中的元素反向,重新拷贝一个列表。sort():将列表中的元素排序,不重新拷贝一个列表。sortd():将列表中的元素排序,重新拷贝一个列表。copy():浅拷贝,只是给原来的列表贴上了一个新标签,对于一个复杂对象的子对象并不会完全复制,如果有子列表,改变原来的值,新的拷贝对象也会改变。deepcopy():深拷贝,将复杂对象的每一层复制一个单独的个体出来。就是完全拷贝。常见内置函数:max()、min()、sum()、len()、all()、any()、zip()、enumerate()由于文章篇幅有限,具体的代码,推荐大家看这篇文章:>

第一个问题:因为主进程已经结束,相关的资源已经释放,而线程还在后台运行,所以会导致线程找不到相关的资源和定义

第二个问题:因为主程序结束的时候,并没有等待子线程结束,也没有强制关闭子线程,因此还在后台运行,有两个办法可以让他们同时结束,一个办法是在在构建进程的时候增加参数 deamon=True, 第二个办法就是在程序最后增加thread1join(),thread2join()

python判断是否继续是因为你的代码发生了错误。

在执行第一个文件后,程序停止并询问是否继续批处理。这会导致用户输入延迟。希望我的回答能够帮到你,如果不明白,您可以继续追问!谢谢!祝您生活愉快!

举例区分Python中的浅复制与深复制

这篇文章主要介绍了举例区分Python中的浅复制与深复制,是Python入门学习中的重要知识,需要的朋友可以参考下

copy模块用于对象的拷贝 *** 作。该模块非常简单,只提供了两个主要的方法: copycopy 与 copydeepcopy ,分别表示浅复制与深复制。什么是浅复制,什么是深复制,网上有一卡车一卡车的资料,这里不作详细介绍。复制 *** 作只对复合对象有效。用简单的例子来分别介绍这两个方法。

浅复制只复制对象本身,没有复制该对象所引用的对象。

#coding=gbk

import copy

l1 = [1, 2, [3, 4]]

l2 = copycopy(l1)

print l1

print l2

l2[2][0] = 50

print l1

print l2

#---- 结果 ----

[1, 2, [3, 4]]

[1, 2, [3, 4]]

[1, 2, [50, 4]]

[1, 2, [50, 4]]

同样的代码,使用深复制,结果就不一样:

import copy

l1 = [1, 2, [3, 4]]

l2 = copydeepcopy(l1)

print l1

print l2

l2[2][0] = 50

print l1

print l2

#---- 结果 ----

[1, 2, [3, 4]]

[1, 2, [3, 4]]

[1, 2, [3, 4]]

[1, 2, [50, 4]]

改变copy的默认行为

在定义类的时候,通过定义__copy__和__deepcopy__方法,可以改变copy的默认行为。下面是一个简单的例子:

class CopyObj(object):

def __repr__(self):

return "CopyObj"

def __copy__(self):

return "Hello"

obj = CopyObj()

obj1 = copycopy(obj)

print obj

print obj1

#---- 结果 ----

CopyObj

Hello

以上就是关于python里面的列表复制全部的内容,包括:python里面的列表复制、python 获取列表元素有几种方式,常见的是哪种、python 主程序结束的时候线程是否结束问题2个问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10188302.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-06
下一篇 2023-05-06

发表评论

登录后才能评论

评论列表(0条)

保存