(Python基础语法)编写函数,模拟内置函数 sorted()

编写函数,模拟内置函数sorted

问题分析及代码展示如下

#编写函数,模拟内置函数 sorted()[参数传入问题,比较法则问题,排序方向问题]
from collections.abc import Iterable
def sort(*parameter,key = None,reverse = False):#*parameter表示任意多参数
	if(isinstance(parameter[0],Iterable)):
		lst = list(*parameter)#*paremeter实参进行序列解包(([],)==>[])(注意是在函数中对实参使用*进行序列解包)
	else:
		lst = list(parameter)

	isNone = False
	if not key == None:#如果指定排序法则的话,那么就需要进行另一套比较方式了
		isNone = True
		f = lambda x : key(x)

	if not isNone:
		for i in range(len(lst) - 1):
			for j in range(len(lst) - 1 - i):
				if lst[j] > lst[j+1]:
					temp = lst[j]
					lst[j] = lst[j+1]
					lst[j+1] = temp
	else:
		for i in range(len(lst) - 1):
			for j in range(len(lst) - 1 - i):
				if f(lst[j]) > f(lst[j+1]):
					temp = lst[j]
					lst[j] = lst[j+1]
					lst[j+1] = temp


	if reverse:
		lstReversed = []
		for i in range(len(lst)):
			lstReversed.append(lst[len(lst)-1-i])
		lst = lstReversed

	print(lst)

sort(2,4,3,5,7,1,6,0,21222,12,8,9,key = lambda x : len(str(x)))
sort([2,3,5,7,1,6,0,21222,12,8,9])
sort([2,3,5,7,1,6,0,21222,12,8,9],reverse = True)
"""sort函数文档如下 
sorted(iterable, /, *, key=None, reverse=False)
    Return a new list containing all items from the iterable in ascending order.

    A custom key function can be supplied to customize the sort order, and the
    reverse flag can be set to request the result in descending order."""
"""判断可迭代对象的方法
from collections import Iterable
isinstance([1,2,3,4], Iterable) ==> True
"""
"""
注解
第三行*parameter实参的使用,使得parameter变为一个元组存储数据,其中元素为传入参数;
当传入为可迭代对象的时候,例如[1,2,3,4],parameter为([1,2,3,4],)==>第一个元素为可迭代对象
当传入几个数字的时候,例如1,2,3,4,paramete为(1,2,3,4)==>第一个元素为数字
"""
"""字符串数字的比较原则,例如'9' > '12'
这是为什么呢?是因为比较的是字符的编码,先进行91字符编码的比较,发现前者大,那么比较停止,得到结果
ord('1') = 49
ord('9') = 57
"""
  • 2
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值