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],结果又换回来了。找最大值的索引位置要在任何替换操作之前。

时间: 2024-10-14 00:30:11

python学习中的一些“坑”的相关文章

Python学习中的随笔,好记性不如烂笔头

本文 为博主看了 vamei 的blog 写下的随笔 . 致敬Vamei 1.type()   可以显示参数的类型 如 : a=12   type(a) 为 int 2.python的基本类型 为 int float bool string   如 int :  i=1   ,   float :  f=12.5  ,  bool : b= True  or  Flase , string :  s='Hello , word !' 使用前无需声明类型  即 动态类型 3.1序列有 tuple

Python学习中:最感到惊奇35个语言特征和编程技巧

从我开始学习python的时候,我就开始自己总结一个python小技巧的集合.后来当我什么时候在Stack Overflow或者在某个开源软件里看到一段很酷代码的时候,我就很惊讶:原来还能这么做!当时我会努力的自己尝试一下这段代码,直到我懂了它的整体思路以后,我就把这段代码加到我的集合里.这篇博客其实就是这个集合整理后一部分的公开亮相.如果你已经是个python大牛,那么基本上你应该知道这里面的大多数用法了,但我想你应该也能发现一些你不知道的新技巧.而如果你之前是一个c,c++,java的程序员

Python开发过程中17个坑

一.不要使用可变对象作为函数默认值 复制代码代码如下: In [1]: def append_to_list(value, def_list=[]):   ...:         def_list.append(value)   ...:         return def_list   ...: In [2]: my_list = append_to_list(1) In [3]: my_listOut[3]: [1] In [4]: my_other_list = append_to_l

Kindeditor学习中的那些坑

Kindeditor富文本编辑器还算比较好上手的一款插件吧,下面记录一下我在学习和实践中遇到的那些坑. 编辑器初始化方法和参数网上一搜一大把,不想搜的点这里,文档上各个参数已经写得很清楚了,直接拿过来用就OK 开始说一些实际用到时的一些需求. 1.插入链接时增加链接标题的输入框 初始化的Kindeditor插入链接时是这样的 只能输入链接地址,不能输入链接文字,其实Kindeditor默认做法是,如果你在编辑其中没有选中内容,他就默认把链接地址设为链接文本,有选中的内容则自动提取选中内容为链接文

python学习第三个坑

##########################python 第三章 ################################这一章呢,主要是文件的操作,还有涉及到函数的一部分. PS:整理博客很是费事,这就是我写的笔记,本来在线下挺好看的.拿到这里就成这熊样了,没办法...凑活着看吧 文件操作: 文件操作一般用open,或者用file,格式如下:变量名 = open('文件路径','模式','字符编码') 读取文件需要操作硬件,用户是无法直接操作硬件的,一般操作系统才有这个功能去调

python 学习中遇到的问题

一.安装pip中遇到的问题. 出现错误:ImportError:DLL load failed :%1不是有效的win32应用程序 出现问题解答: 主要是由于安装的python版本和所下载的安装包版本不一致,导致的. 如果python是32 位的,而电脑是64位的.下载的安装包是64位的,就会导致问题的产生.所以有以下解决办法: 1.卸载现在的安装包版本.直接将python文件删除,删除环境变量. 2.重新安装python文件. 最后问题解决. 二.安装scipy时候遇到的问题. 提示错误:nu

Python学习中,当使用writerow时输出多余的空行解决方法

今天在学习用Python进行CSV文件存储 当我以csv格式写入文件的时候,文件读取的时候出现了多余的空行,代码: 1 import csv 2 3 with open('data.csv', 'w') as csvfile: 4 writer = csv.writer(csvfile) 5 writer.writerow(['id', 'name', 'age']) 6 writer.writerow(['10001', 'Mike', '20']) 7 writer.writerow(['1

Python学习中的知识点(range和xrange)

range() 如果需要迭代一个数字序列的话,可以使用range()函数,range()函数可以生成等差级数. 如例:for i in range(5)     print(i)这段代码将输出0, 1, 2, 3, 4五个数字 range(10)会产生10个值, 也可以让range()从另外一个数字开始,或者定义一个不同的增量,甚至是负数增量 range(5, 10)从5到9的五个数字range(0, 10, 3) 增量为三, 包括0,3,6,9四个数字range(-10, -100, -30)

【python之路】【2、编程基础】Python学习中的问题1

[列表中的重复数据,使用for循环遍历列表时,最后只取一次.] 1 #商店里的商品列表 2 com = [ 3 ("iphone",5800), 4 ("macbook",9000), 5 ("coffee",320), 6 ("pythonbook",80), 7 ("bicyle",1500) 8 ] 9 shoplist = []#购物车变量 10 11 salary = input("请输