老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

Python 根據兩個字段排序 中文排序 漢字排序 升序 降序

Python3寫法

代碼

# -*- coding: utf-8 -*-

# 需求:年齡倒序,姓名正序

from itertools import chain
from pypinyin import pinyin, Style


class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age


def to_pinyin(stu):
    lst = pinyin(stu.name, style=Style.TONE3)  # 例:[['zhang1'], ['san1']]
    print(lst)
    iterator = chain.from_iterable(lst)  # 迭代器
    iterator_for_print = chain.from_iterable(lst)  # 迭代器
    print(iterator_for_print)
    for item in iterator_for_print:
        print(item)

    # 寫法一
    return ''.join(iterator)

    # 寫法二
    # return ''.join(chain.from_iterable(pinyin(stu.name, style=Style.TONE3)))


studentList = [
    Student("張三", 25),
    Student("小紅", 22),
    Student("王五", 25),
    Student("小張", 22),
    Student("李四", 25),
    Student("小明", 22)
]

# 寫法一
# studentList.sort(key=lambda stu: pinyin(stu.name, style=Style.TONE3))

# 寫法二
studentList.sort(key=lambda stu: to_pinyin(stu))
studentList.sort(key=lambda stu: stu.age, reverse=True)

print("排序結果:")
for student in studentList:
    print(str(student.age) + " " + student.name)

輸出結果

Python2寫法

代碼

# -*- coding: utf-8 -*-

# 需求:年齡倒序,姓名正序

from itertools import chain
from pypinyin import pinyin, Style


class Student:
    def __init__(self, name, age):
        self.name = name
        self.age = age


def to_pinyin(stu):
    lst = pinyin(stu.name.decode("utf-8"), style=Style.TONE3)  # 例:[['zhang1'], ['san1']]
    print(lst)
    iterator = chain.from_iterable(lst)  # 迭代器
    iterator_for_print = chain.from_iterable(lst)  # 迭代器
    print(iterator_for_print)
    for item in iterator_for_print:
        print(item)

    # 寫法一
    return ''.join(iterator)

    # 寫法二
    # return ''.join(chain.from_iterable(pinyin(stu.name.decode("utf-8"), style=Style.TONE3)))


studentList = [
    Student("張三", 25),
    Student("小紅", 22),
    Student("王五", 25),
    Student("小張", 22),
    Student("李四", 25),
    Student("小明", 22)
]

# 寫法一
# studentList.sort(key=lambda stu: pinyin(stu.name.decode("utf-8"), style=Style.TONE3))

# 寫法二
studentList.sort(key=lambda stu: to_pinyin(stu))
studentList.sort(key=lambda stu: stu.age, reverse=True)

print("排序結果:")
for student in studentList:
    print(str(student.age) + " " + student.name)

輸出結果

C#的示例

代碼



List list = new List()
{
    new Student("張三", 25),
    new Student("小紅", 22),
    new Student("王五", 25),
    new Student("小張", 22),
    new Student("李四", 25),
    new Student("小明", 22)
};

//方法一,雖然寫法繁瑣,但思路清晰
list.Sort((a, b) =>
{
    if (a.Age != b.Age)
    {
        return b.Age - a.Age;
    }
    else
    {
        return string.Compare(a.Name, b.Name);
    }
});

//方法二,簡捷清晰明了
//list = list.OrderByDescending(a => a.Age).ThenBy(a => a.Name).ToList();

foreach (var item in list)
{
    Console.WriteLine(item.Age + " " + item.Name);
}

Console.Read();

class Student
{
    public string Name { get; set; }

    public int Age { get; set; }

    public Student(string name, int age)
    {
        Name = name;
        Age = age;
    }
}

輸出結果

對比C#,Python的坑

  1. Python默認的中文排序得不到預期的結果,需要引用pypinyin庫解決,相當麻煩,要看懂這個代碼,需要了解迭代器
  2. Python2的pypinyin庫只支持unicode編碼的字符串,必須通過decode轉碼,如果不轉碼,則拋出錯誤:must be unicode string or [unicode, ...] list
  3. Python沒有大括號,無法直接在lambda表達式中寫方法,方法必須定義在lambda表達式外部
  4. Python的lambda寫法相對難以理解

經驗豐富的Python程序員會說,這還不簡單?
但是對于新手來說,非常不人性化,非常浪費時間。
我作為一個Python新手,就寫個簡單的排序程序,花了很長時間才學會怎么寫,當然,確實沒有去看文檔,只通過百度以及在技術群里問,但是沒有一個一口答出正確答案,最后自己摸索成功。
有人說Python2忘的差不多了,C#就不會忘。
用到pypinyin庫時,還不習慣看pypinyin庫的源碼,pinyin方法的注釋非常詳細,不過沒有C#這種強類型的語言看起來方便。
對比C#,Python的代碼確實相對簡捷。

成都創新互聯公司專注于龍游企業網站建設,自適應網站建設,商城網站定制開發。龍游網站建設公司,為龍游等地區提供建站服務。全流程按需網站制作,專業設計,全程項目跟蹤,成都創新互聯公司專業和態度為您提供的服務


文章名稱:Python 根據兩個字段排序 中文排序 漢字排序 升序 降序
文章出自:http://www.xueling.net.cn/article/dsogcoo.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 波多野结衣AV全免费观 | 日韩免费小视频 | 91超碰福利 | 中文字幕小视频 | 日本a级特黄特黄刺激大片 黄色片在线 | 欧美精品无码久久久潘金莲 | 手机看片日本 | 干干日日 | A级无遮挡超级高清一在线观看 | 久久亚洲AV永久无码精品 | 亚洲欧美中文字幕在线一区 | 97中文字幕在线观看 | 国精产品999一区二区三区有限 | 涂了春药被一群人伦爽99势 | 国产香蕉伊蕉伊中文在线视频 | 国产内射露脸在线观看 | 91免费片| 殴美性猛交 | 粉嫩av一区二区老牛影视 | 亚洲激情一二三区 | 欧美疯狂xxxx大交乱88av | 精品中文久久 | a色综合 | 欧产日产国产精品 | 国产精品三级av | 懂色av一区二区三区四区五区 | 爱草视频在线 | 国产99久久久国产精品~~牛 | 国产成人欧美视频在线观看 | 免费成人午夜 | 亚洲一区中文日韩 | 欧美日韩国产高清视频 | 成人一道本在线 | 亚洲国产精品激情综合图片 | 精产国品一二三产区区别麻豆 | 国产人妻精品区一区二区三区 | 成年人黄色一级片 | 日日射夜夜 | 九一视频国产 | 视频一区视频二区中文精品 | 26uuu久久综合 |