博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python练习笔记——用函数对列表奇偶分类,且过程不增加新列表
阅读量:7038 次
发布时间:2019-06-28

本文共 1462 字,大约阅读时间需要 4 分钟。

编写一个函数:函数接收一个列表,将列表中所有的奇数,放到偶数之前,要求过程中不增加新的列表

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 argsprint(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 argsprint(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 
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 属性。

元组?

实际上,虽然我们是实参传入的是列表,但是再函数调用后将其作为元组进行运算;所以必须进行类型转换。

 

转载地址:http://msxal.baihongyu.com/

你可能感兴趣的文章
T-SQL.字符串函数
查看>>
mysql慢查询
查看>>
offices文件打开乱码问题如何处理
查看>>
抓屏程序
查看>>
many-to-many出现的问题
查看>>
第5章 配置邮箱服务
查看>>
node.js的一个简单框架
查看>>
PPT如何保存还原已剪裁图片的原始版本
查看>>
lnmp一键安装之-php
查看>>
ajax 同步和异步的区别
查看>>
linux shell单引号、双引号及无引号区别(考试题答案系列)--看到这篇文章之后我豁然开朗...
查看>>
排错 zabbix-agent 主机重启无法被监控
查看>>
win10操作系统
查看>>
Mutual Funds引起的一桩桩血案
查看>>
zabbix如何监控nginx性能
查看>>
python3的异常处理
查看>>
linux C 动态共享库编译链接
查看>>
用jdbcTempate调用存储过程,处理BLOBCLOB小记
查看>>
oracle study road
查看>>
《你必须知道的495个C语言问题》笔记
查看>>