python练习笔记——用函数对列表奇偶分类,且过程不增加新列表
编写一个函数:函数接收一个列表,将列表中所有的奇数,放到偶数之前,要求过程中不增加新的列表
def fun(*args):
# 因为奇数放在偶数之前,标记出奇数中的偶数
# 并将该偶数取出放在数列的最后面
# 同时将奇数中间的偶数标记为"*"
args_long = len(args)
args = list(args)
j = 0
for i in range(args_long):
if args[i] % 2 == 0:
j += 1
args.append(args[i])
args[i] = "*"
# 将奇数中的偶数(已经标记为*)删去
new_args_long = len(args)
k = 0
for i in range(new_args_long-j-k):
if args[i-k] == "*":
del args[i-k]
k +=1
return args
print(fun(*[1,2,3,4,5,6,7,8,9]))
print(fun(*[9,8,7,6,5,4,3,2,1]))
运行
[1, 3, 5, 7, 9, 2, 4, 6, 8] [9, 7, 5, 3, 1, 8, 6, 4, 2]
将该方案进行优化
def fun(*args):
# 因为奇数放在偶数之前,标记出奇数中的偶数
# 并将该偶数取出放在数列的最后面
# 同时将奇数中间的偶数标记为"*"
args_long = len(args)
args = list(args)
j = 0
for i in range(args_long):
if args[i-j] % 2 == 0:
j += 1
args.append(args[i]) #追加至列表尾部
del args[i] #将该位置的偶数删去
return args
print(fun(*[1,2,3,4,5,6,7,8,9])) #[1, 3, 5, 7, 9, 2, 4, 6, 8]
print(fun(*[9,8,7,6,5,4,3,2,1])) #[9, 7, 5, 3, 1, 8, 6, 4, 2]
问题当没有 args = list(args) 这段代码
Traceback (most recent call last):
File "t12.py", line 14, in <module>
print(fun(*[1,2,3,4,5,6,7,8,9])) #[1, 3, 5, 7, 9, 2, 4, 6, 8]
File "t12.py", line 10, in fun
args.append(args[i]) #追加至列表尾部
AttributeError: 'tuple' object has no attribute 'append'
会直接报错。
报错原因是 元组 没有 append 属性。
元组?
实际上,虽然我们是实参传入的是列表,但是再函数调用后将其作为元组进行运算;所以必须进行类型转换。
python练习笔记——用函数对列表奇偶分类,且过程不增加新列表的更多相关文章
- Python学习笔记之函数
这篇文章介绍有关 Python 函数中一些常被大家忽略的知识点,帮助大家更全面的掌握 Python 中函数的使用技巧 1.函数文档 给函数添加注释,可以在 def 语句后面添加独立字符串,这样的注释被 ...
- Python学习笔记_week3_函数
一.介绍 1.面向对象(华山派)--->类(独门秘籍)--->class(定义的关键字) 2.面向过程(少林派)--->过程--->def 3.函数式编程(逍遥派)---> ...
- Python学习笔记 - day6 - 函数
函数 函数在编程语言中就是完成特定功能的一个词句组(代码块),这组语句可以作为一个单位使用,并且给它取一个名字.可以通过函数名在程序的不同地方多次执行(这叫函数的调用).函数在编程语言中有基本分为:预 ...
- 小甲鱼:Python学习笔记003_函数
>>> # 函数>>> def myFirstFunction(params1,params2...): print("这是我的第一个函数!") ...
- python学习笔记(九)函数返回多个值,列表生成式,循环多个变量,入参格式声明
一.函数返回多个值 1.函数如果返回多个值的话,它会把这几个值放到一个元组里面2.函数如果返回多个值的话,也可以用多个变量来接收 def say(): num1 = num2 = num3 = ret ...
- python学习笔记(4)--函数
1.函数 函数是指将一组语句的集合通过一个名字封装起来.要想执行这个函数,只需调用其函数名即可. 函数的特性: 1.减少重复代码 2.使程序变的课扩展 3.使程序变得易维护 语法定义: def pri ...
- python学习笔记之函数的参数
函数的参数有位置参数和关键字参数,位置参数一定要在关键字参数的前面,位置参数的优先级是高于关键字参数的,否则会报错 def my_abs(a,b): print(a) print(b) my_abs( ...
- Python学习笔记009—函数
1. 空函数 如果想定义一个什么事也不做的空函数,可以用pass语句: def nop(): pass pass语句什么都不做,那有什么用?实际上pass可以用来作为占位符,比如现在还没想好怎么写函数 ...
- Python学习笔记系列——函数
今年下半年的计划主要是Python和Mysql了,公司不方便看书和视频,就照着廖雪峰的Python网站开始看了.以下纯为个人笔记记录,若是想系统学习的小伙伴还是看这里的好一些,毕竟系统.https:/ ...
随机推荐
- Java按键事件KeyEvent
按键事件可以利用键盘来控制和执行一些动作,或者从键盘上获取输入,只要按下,释放一个键或者在一个组件上敲击,就会触发按键事件.KeyEvent对象描述事件的特性(按下,放开,或者敲击一个键)和对应的值. ...
- 新鲜出炉!9个超高分辨率的iPhone 6原型素材打包下载
iPhone 6 出场,设计师又有得忙活了,但是新鲜的资源你们在哪里?!今天我们收集了一组精致的iPhone 6 模型素材,超高分辨率,多种视图,全都打包完毕,点一下就可以拿回家!赶紧来取吧!—— ...
- js复制当前url地址解决浏览器兼容
1.网上搜索的js复制链接代码,好像只能支持ie浏览器,其他浏览器不支持, 案例: var url=12; if(window.clipboardData){ wi ...
- javascript制作公式编辑器,函数编辑器和图形绘制
自己是电子信息方向的,因此总是需要处理大量的电路实验.电路数据和电路仿真处理,每次处理数据时候还需要同样的数据很多遍, 又需要关于电路的频率响应和时域响应情况,所以一直有做一个这样公式编辑器的打算了. ...
- QlikView图表显示同比数据
数据准备例如以下: SalesData: LOAD Num(ID) as ID, Date(Date) as Date, Month, Num(Year) as Year, Num(Sales) as ...
- iframe之onload事件小记
项目上做了一个具有wizard(向导)功能的菜单导航页面,子页面的引入通过主页面上iframe的src属性切换实现.为了有个良好的交互体验,每次更新iframe的src时,主页面上都显示一个模态的lo ...
- javascript进行遍历
javascript进行遍历 <!doctype html> <html lang="en"> <head> <meta charset= ...
- (转)Unity3d UnityEditor编辑器定制和开发插件
在阅读本教程之前,你需要对Unity的操作流程有一些基础的认识,并且最好了解内置的GUI系统如何使用. 如何让编辑器运行你的代码 Unity3D可以通过事件触发来执行你的编辑器代码,但是我们需要一些编 ...
- 图像数据到网格数据-1——MarchingCubes算法
原文:http://blog.csdn.net/u013339596/article/details/19167907 概述 之前的博文已经完整的介绍了三维图像数据和三角形网格数据.在实际应用中,利用 ...
- 4. Add override methods to class
1. In the class, right click 2. "Scource" 3. "Override / Implement Menthods" 4. ...