kin_sin 2021-01-08 12:41 采纳率: 100%
浏览 7
已采纳

python3一个简单问题求解答。

 a,b=b,a显然是常用的交换方法,但是在list切片中出现了以下情况,请问发生了什么,是否涉及什么原理

 

  • 写回答

5条回答 默认 最新

  • PythonJavaC++go 2021-01-08 18:01
    关注

    切片索引赋值3:

    a[k:] = a[:k]; (x = y)即用列表a从0到k位的数据覆盖列表a从k位到尾的数据,y多出来的则自动扩展x,x第k位后面若有数值则自动后移,即执行的是insert。

    list切片赋值,涉及到的大致就这三种情况了。

    另外,x, y = y, x的本质就是tmp = x,x = y, y = tmp

    x、y为列表切片时也是一样的。

    你按tmp = x,x = y, y = tmp这个顺序。再结合切片索引的赋值情况去理解就可以了。

    当k = 9 时。b那列:

    # k = 9
    #
    # tmp = a[:k] # [1, 2, 3, 4, 5, 6, 7, 8, 9], 此时a还是[1到10]
    # a[:k] = a[k:] # [10], 此时a 为[10, 10]; 因为a[:9] = [9:], 此时a的前9位数(a[:9])被10(即[9:])覆盖
    # a[k:] = tmp # 运算前a 为[10, 10],a[k:] = []; tmp = [1-9]; 此时的运算即 a + 【】,此时的【】空列表为tmp,即a.exted(tmp),故运算后a=[10, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9]
    #
    # # 反过来: b[k:], b[:k] = b[:k], b[k:],最终b =[10, 1-9] (第一步;tmp=[10], 第二步:b[k:]=[1-9],b=[1-9,1-9], )

    你可以结合这个案例理解一下索引切片赋值。三种情况个人总结。

     

    (上面不懂,没关系。按tmp = x,x = y, y = tmp这个顺序。x=y时列表是有发生变化的,这两点自己去理解即可)

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(4条)

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度