python: sort
# encoding: utf-8
# 版权所有 2024 ©涂聚文有限公司
# 许可信息查看:
# 描述:
# Author : geovindu,Geovin Du 涂聚文.
# IDE : PyCharm 2023.1 python 3.11
# Datetime : 2024/09/28 20:28
# User : geovindu
# Product : PyCharm
# Project : EssentialAlgorithms
# File : example.py
from enum import Enum
class PepoleCollation(Enum):
"""
選擇字段排序
"""
Id=1,
"""
"""
RealName=2,
"""
"""
Tel=3,
"""
"""
Age=4
"""
"""
class Pepole(object):
"""
"""
def __init__(self):
"""
"""
self._id=None
self._realname=None
self._tel=None
self._age=None
@property
def Id(self):
"""
"""
return self._id
@Id.setter
def Id(self,ids):
"""
"""
self._id=ids
@property
def RealName(self):
"""
:return:
"""
return self._realname
@RealName.setter
def RealName(self,realname):
"""
:param realname:
:return:
"""
self._realname=realname
@property
def Tel(self):
"""
:return:
"""
return self._tel
@Tel.setter
def Tel(self,tel):
"""
:param tel:
:return:
"""
self._tel=tel
@property
def Age(self):
"""
:return:
"""
return self._age
@Age.setter
def Age(self,age):
"""
:param age:
:return:
"""
self._age=age
def Sort(table:list[Pepole],check: PepoleCollation,isDesc=True)->list[Pepole]:
"""
object Pepole list
:param table
:param check
:param isDesc
:return
"""
#check=PepoleCollationField.Age
if PepoleCollation.Age==check:
print("age desc",PepoleCollation.Age)
table.sort(key=lambda Pepole: (Pepole.Age,Pepole.Id), reverse=isDesc)
elif PepoleCollation.Id==check:
table.sort(key=lambda Pepole: (Pepole.Id), reverse=isDesc)
elif PepoleCollation.RealName==check:
table.sort(key=lambda Pepole: (Pepole.RealName), reverse=isDesc)
elif PepoleCollation.Tel==check:
table.sort(key=lambda Pepole: (Pepole.Tel), reverse=isDesc)
else:
table.sort(key=lambda Pepole: (Pepole.RealName), reverse=isDesc)
#for info in table:
#print(info.Id,info.RealName,info.Tel,info.Age)
return table
table=[]
p=Pepole()
p.Id='1'
p.RealName="geovindu"
p.Tel="13824350518"
p.Age=28
table.append(p)
p=Pepole()
p.Id='2'
p.RealName="sibo"
p.Tel="13324350518"
p.Age=18
table.append(p)
p=Pepole()
p.Id='3'
p.RealName="zaoti"
p.Tel="13624350518"
p.Age=22
table.append(p)
p=Pepole()
p.Id='4'
p.RealName="jiang"
p.Tel="13524350518"
p.Age=12
table.append(p)
p=Pepole()
p.Id='5'
p.RealName="xiaobiao"
p.Tel="13224350518"
p.Age=20
table.append(p)
# 1
tablesore=sorted(table, key=lambda Pepole: Pepole.Age, reverse=True)
for info in tablesore:
print(info.Id,info.RealName,info.Tel,info.Age)
print('***************')
# 2
Sort(table, PepoleCollation.Age,False)
print('*******2********')
for info in table:
print(info.Id,info.RealName,info.Tel,info.Age)
# 3
Sort(table, PepoleCollation.Age)
print('*******3********')
for info in table:
print(info.Id,info.RealName,info.Tel,info.Age)
# from https://docs.python.org/3/howto/descriptor.html
# from https://docs.python.org/3/library/functions.html
# from https://docs.python.org/3/howto/sorting.html
# encoding: utf-8
# 版权所有 2024 ©涂聚文有限公司
# 许可信息查看:
# 描述:
# Author : geovindu,Geovin Du 涂聚文.
# IDE : PyCharm 2023.1 python 3.11
# Datetime : 2024/09/28 20:28
# User : geovindu
# Product : PyCharm
# Project : EssentialAlgorithms
# File : example.py
class Pepole(object):
"""
"""
def __init__(self):
"""
"""
self._id=None
self._realname=None
self._tel=None
self._age=None
@property
def Id(self):
"""
"""
return self._id
@Id.setter
def Id(self,ids):
"""
"""
self._id=ids
@property
def RealName(self):
"""
:return:
"""
return self._realname
@RealName.setter
def RealName(self,realname):
"""
:param realname:
:return:
"""
self._realname=realname
@property
def Tel(self):
"""
:return:
"""
return self._tel
@Tel.setter
def Tel(self,tel):
"""
:param tel:
:return:
"""
self._tel=tel
@property
def Age(self):
"""
:return:
"""
return self._age
@Age.setter
def Age(self,age):
"""
:param age:
:return:
"""
self._age=age
table=[]
p=Pepole()
p.Id='1'
p.RealName="geovindu"
p.Tel="13824350518"
p.Age=28
table.append(p)
p=Pepole()
p.Id='2'
p.RealName="sibo"
p.Tel="13324350518"
p.Age=18
table.append(p)
p=Pepole()
p.Id='3'
p.RealName="zaoti"
p.Tel="13624350518"
p.Age=22
table.append(p)
p=Pepole()
p.Id='4'
p.RealName="jiang"
p.Tel="13524350518"
p.Age=12
table.append(p)
p=Pepole()
p.Id='5'
p.RealName="xiaobiao"
p.Tel="13224350518"
p.Age=20
table.append(p)
# 1
tablesore=sorted(table, key=lambda Pepole: Pepole.Age, reverse=True)
for info in tablesore:
print(info.Id,info.RealName,info.Tel,info.Age)
# 2
table.sort(key=lambda Pepole: (Pepole.Age,Pepole.Id), reverse=True)
for info in table:
print(info.Id,info.RealName,info.Tel,info.Age)
# from https://docs.python.org/3/howto/descriptor.html
# from https://docs.python.org/3/library/functions.html
# from https://docs.python.org/3/howto/sorting.html
# encoding: utf-8
# 版权所有 2024 ©涂聚文有限公司
# 许可信息查看:
# 描述:
# Author : geovindu,Geovin Du 涂聚文.
# IDE : PyCharm 2023.1 python 3.11
# Datetime : 2024/4/28 10:37
# User : geovindu
# Product : PyCharm
# Project : EssentialAlgorithms
# File : example.py
# explain : 学习
class Sort(object):
"""
"""
@staticmethod
def BubbleSort(table: list, columnindex=4) -> list:
"""
:param table: Two Dimensional (2D) Array
:param columnindex: 需要排序的列索引
:return: tabe sorted
"""
if type(table[0])==list: #二维列表
for i in range(0, len(table) - 1):
# 考虑数据类型
# print(table[i][j],table[i+1][j],table[i],table[i+1])
if type(table[i][columnindex]) == int:
if table[i][columnindex] < table[i + 1][columnindex]:
temp = table[i]
table[i] = table[i + 1]
table[i + 1] = temp
if type(table[i][columnindex]) == str:
if table[i][columnindex][0].lower() < table[i + 1][columnindex][0].lower(): # 第一个字母排序,以小写字母 以小写字母,以字母的ASCII的值比較
temp = table[i]
table[i] = table[i + 1]
table[i + 1] = temp
else:
# 一维列表
for i in range(len(table)):
for j in range(0, len(table) - i - 1):
if type(table[i]) == int:
if table[j] > table[j + 1]:
temp = table[j]
table[j] = table[j + 1]
table[j + 1] = temp
if type(table[i]) == str:
if table[j][0] > table[j + 1][0]:
temp = table[j]
table[j] = table[j + 1]
table[j + 1] = temp
return table
if __name__=="__main__":
table = [ ['1', 'Du', 'GeovinDu', '13824350518',92],
['2', 'Rose', 'Tom', '1882458888',38],
['3', 'Lin', 'bo', '852000000',87],
['4', 'Ada', 'Jaing', '18999999999',87]]
print(type(table))
print(type(table[0]))
if type(table[0])==list:
print('list')
else:
print('not list')
Sort.BubbleSort(table,4)
print(table)
row=[1, 5, 7, 0,92]
print(type(row))
print(type(row[0]))
if type(row[0])!=list:
print('not list')
else:
print('is list')
Sort.BubbleSort(row)
print(row)
row=['1', 'Du', 'GeovinDu', '13824350518','92']
Sort.BubbleSort(row)
print(row)
table = [ ['1', 'Du', 'GeovinDu', '13824350518',92],
['2', 'Rose', 'Tom', '1882458888',38],
['3', 'Lin', 'bo', '852000000',87],
['4', 'Ada', 'Jaing', '18999999999',87]]
# Bubble Sort冒泡排序法
columnindex=1
print(type(table[0][columnindex]),table[0][coumnindex])
for i in range(0,len(table)-1):
#for j in range(0, len(table[0]) - i - 1):
#print(table[i][j],table[i+1][j],table[i],table[i+1])
if type(table[i][columnindex])==int:
if table[i][columnindex]<table[i+1][columnindex]:
temp = table[i]
table[i] = table[i+1]
table[i+1] = temp
if type(table[i][columnindex])==str:
if table[i][columnindex][0].lower()<table[i+1][columnindex][0].lower():
temp = table[i]
table[i] = table[i+1]
table[i+1] = temp
print(table)
table = [ ['1', 'Du', 'GeovinDu', '13824350518',92],
['2', 'Rose', 'Tom', '1882458888',38],
['3', 'Lin', 'bo', '852000000',87],
['4', 'Ada', 'Jaing', '18999999999',87]]
# Bubble Sort冒泡排序法
curr=0
tablesore=[]
columnindex=4
for i in range(0,len(table)-1):
#for j in range(0, len(table[0]) - i - 1):
#print(table[i][j],table[i+1][j],table[i],table[i+1])
if table[i][columnindex] >table[i+1][columnindex]:
temp = table[i]
table[i] = table[i+1]
table[i+1] = temp
print(table)
print('*********')
table = [ ['1', 'Du', 'GeovinDu', '13824350518',92],
['2', 'Rose', 'Tom', '1882458888',38],
['3', 'Lin', 'bo', '852000000',87],
['4', 'Ada', 'Jaing', '18999999999',87]]
table.sort(key=lambda column: (column[4],column[0] ), reverse=True)
print(table)
table.sort(key=lambda column: (column[4]), reverse=True)
print(table)
table.sort(key=lambda column: (column[4],column[0]), reverse=True)
print(table)
sorted(table, key=lambda x: x[4], reverse=True)
print(table)
# from https://scripteverything.com/python-2d-list-sort-by-multiple-columns-code-examples-no-imports-one-liners
# from https://numpy.org/doc/stable/reference/generated/numpy.sort.html
# from https://thispointer.com/sorting-2d-numpy-array-by-column-or-row-in-python/
def BubbleSort(table: list, columnindex: int) -> list:
"""
:param table: Two Dimensional (2D) Array
:param columnindex: 需要排序的列索引
:return: tabe sorted
"""
for i in range(0, len(table) - 1):
# 考虑数据类型
# print(table[i][j],table[i+1][j],table[i],table[i+1])
if type(table[i][columnindex]) == int:
if table[i][columnindex] < table[i + 1][columnindex]:
temp = table[i]
table[i] = table[i + 1]
table[i + 1] = temp
if type(table[i][columnindex]) == str:
if table[i][columnindex][0].lower() < table[i + 1][columnindex][0].lower(): # 第一个字母排序,以小写字母 以小写字母,以字母的ASCII的值比較
temp = table[i]
table[i] = table[i + 1]
table[i + 1] = temp
return table
if __name__=="__main__":
"""
main import
"""
table = [['1', 'Du', 'GeovinDu', '13824350518', 92],
['2', 'Rose', 'Tom', '1882458888', 38],
['3', 'Lin', 'bo', '852000000', 87],
['4', 'Ada', 'Jaing', '18999999999', 87]]
BubbleSort(table,4)
print(table)
https://docs.python.org/3/library/functions.html
https://docs.python.org/3/howto/descriptor.html
https://docs.python.org/3/howto/descriptor.html
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
浙公网安备 33010602011771号