Python的.remove()方法删除Lis中的意外项

2024-09-30 01:36:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我写了这个剧本:

soilMod = ['ptaaco']
n = 2

soilModSplit = [soilMod[i:i+n] for i in range(0, len(soilMod), n)] # This returns ['pt', 'aa', 'co']

alphaTest = soilModSplit # I want to maintain the original list built before I remove items below. This returns ['pt', 'aa', 'co'] as well

if 'pt' in soilModSplit:
      soilModSplit.remove('pt')
      print soilModList # This returns ['aa', 'co']
      print alphaTest # This also returns ['aa', 'co'] It's missing the original ['pt', 'aa', 'co'] and I didn't ask the script to remove it from this particular list.

出于某种原因,当我从soilModSplit中删除项(“pt”)时,它也会从alphaTest中删除该项。这是预期的结果吗?似乎任何构建在soilModSplit上的变量(在本例中为alphaTest)都依赖于对soilModSplit执行的任何操作。也许我做错了什么?有办法解决这个问题吗?你知道吗

谢谢你, 迈克


Tags: thetoinptthisremovelistreturns
2条回答

当您执行alphaTest = soilModSplit操作时,您不是在创建副本。只有两个名字引用同一个列表。如果要保存副本,请执行alphaTest = list(soilModSplit)。你知道吗

alphaTest = soilModSplit 

alphatest只是绑定到soilModSplit的同一列表的另一个名称。制作浅显副本:

alphaTest = list(soilModSplit )

相关问题 更多 >

    热门问题