KratosAlbert 2022-10-20 14:26 采纳率: 0%
浏览 11

python也有BUG?

背景:在做CCF试题 2014-12-3题:集合竞价时出现的问题
用代码块功能插入代码,请勿粘贴

```python
lst=[]
while 1:
instruction=list(map(str,input().split())) #将输入的字符按照空格拆分成若干元素并存入一个小[]列表中
if instruction[0]=="cancel" and lst!=[]: #当小列表首位元素为cancel,且大列表不为空时,
lst.pop(int(instruction[1])-1) #从大列表中清除cancel原字符指令中所指代的第n次栈入
elif instruction[0]!="cancel": #当指令不为cancel时
lst.append(instruction) #将小列表instruction存入大列表lst中
print(lst)
lst2=lst #将列表lst赋值给列表lst2
lst2.sort() #对列表2内部进行排序
print(lst2)

```截图

img

运行结果:
         按照四次输入:
        a.buy 2.0 200
        b.sell 1.5 300
        c.buy 3.0 300
        d.sell 4.0 400
        其结果分别为:
        a.[['buy', '2.0', '200']]
           [['buy', '2.0', '200']]
        b.[['buy', '2.0', '200'], ['sell', '1.5', '300']]
           [['buy', '2.0', '200'], ['sell', '1.5', '300']]
        c.[['buy', '2.0', '200'], ['sell', '1.5', '300'], ['buy', '3.0', '300']]
           [['buy', '2.0', '200'], ['buy', '3.0', '300'], ['sell', '1.5', '300']]
        d.[['buy', '2.0', '200'], ['buy', '3.0', '300'], ['sell', '1.5', '300'], ['sell', '4.0', '400']]
           [['buy', '2.0', '200'], ['buy', '3.0', '300'], ['sell', '1.5', '300'], ['sell', '4.0', '400']]
  • 写回答

2条回答 默认 最新

  • 於黾 2022-10-20 14:31
    关注

    lst2=lst #将列表lst赋值给列表lst2
    lst2.sort() #对列表2内部进行排序
    这里在lst2执行排序的时候,其实把lst一起排序了,因为lst是个list,是可变值类型,所以lst2里是lst的引用
    因为你是先打印lst后排序,所以打印的时候lst还没有排序
    前两次,不需要排序,它本来就是顺序的,所以一致
    第三次,因为lst排序之前打印的,lst2排序之后打印的,所以不一致
    第四次,打印的其实还都是lst,所以一致
    如果你希望得到的是一个拷贝而不是引用,应该lst2=lst.copy()或者lst2=lst[:]

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 10月20日

悬赏问题

  • ¥15 zynq板子ps端如何实现sata硬盘存储数据
  • ¥15 matlab图例标签显示错位+显示不全
  • ¥50 关于#stm32ADC##emc静电测试#的问题:stm32 DMA+ADC多通道数据,mec静电测试之后通道采集的数据紊乱,有没有清楚能提供帮助的
  • ¥15 求天御6000隔离软件
  • ¥15 springmvc redis
  • ¥20 来个看看这段代码怎么转换成二维码
  • ¥15 路线配置,规则,位置详解, 操作业类型在创建创建自定义路线中和各种业务详解
  • ¥15 SQL insert into错误
  • ¥50 zk+kafka三节点,zk异常重新选主后导致的高可用问题
  • ¥15 对回溯算法进行剪枝操作