• python学习中的一些“坑”


    一、交互列表元素时,需要注意的坑。

    例如: array=[4,5,9,8,10,8,4,0,3,4]  最大的值与第一个元素交换,最小的值与最后一个元素交换

    # -*- coding: UTF-8 -*-

    array=[4,5,9,8,10,8,4,0,3,4]

    maxa = max(array) #列表最大值
    mina = min(array) #列表最小值
    len_array = len(array) - 1
    max_index = array.index(maxa) #列表最大值的位置
    if max_index != 0: #最大值不在第一个位置
    array[0], array[max_index] = maxa, array[0] #列表最大值和第一个值互换       #第一种写法

    #array[0],array[array.index(max(array))]=maxa,array[0]       #第二种写法(错误)

    min_index = array.index(mina) #取列表最小值

    if min_index != len_array: #最小值不在最后一个位置

    array[-1], array[min_index] = mina, array[-1] #列表最小值和最后一个值互换
    print array

    错误原因:红色字体那种写法得不到正确结果,列表位置未更换。

    表面看第一种写法和第二种写法等价,其实在整句语法中array值已经有变化了,再找的最大值索引位置已不同。

    因为array[0]=maxa 之后array.index(max(array))再去找最大值的索引位置,找到的是交换最大值之后的array[0],再将原array[0]的值替换掉现在的array[0],结果又换回来了。找最大值的索引位置要在任何替换操作之前。

  • 相关阅读:
    java 线程状态和转化
    初学Spring
    unittest --- 单元测试
    Python单例模式的两种实现方式
    python records操作数据库
    数据可视化之——matplotlib基础学习
    python使用list维护成一个队列
    Python将list列表维护成一个栈
    Python使用rsa模块实现非对称加密与解密
    python +OpenCV实现rtmp视频流媒体的播放
  • 原文地址:https://www.cnblogs.com/anne32184/p/5633641.html
Copyright © 2020-2023  润新知