【Python 語法】常用 Python 內置函數

  • reversed() 反轉
    • reversed() 的語法
    • 反轉字符串、列表、元組
  • sorted() 自定義排序
    • sorted() 語法
    • 使用示例
      • 1. 基本排序:默認升序排列
      • 2. 基本排序:降序排列
      • 3. 自定義排序:使用 `key` 參數
      • 4. 自定義排序:按某種規則進行排序
      • 5. 排序字典:根據字典的鍵
      • 6. 排序字典:根據字典的值
    • `sorted()` vs `list.sort()`

reversed() 反轉

reversed() 用來返回一個 反向迭代器,該迭代器可以遍歷輸入對象的元素,但 從后往前遍歷

需要注意的是,reversed()不會直接修改原對象,它返回的是一個迭代器,你可以將它 轉換成列表、元組或字符串等其他類型

使用場景:當需要反向遍歷某個序列,但不想創建一個新的反轉列表時,reversed() 會非常有用。

reversed() 的語法

reversed(sequence)
  • 參數sequence 是一個可以 支持反向迭代的序列(如字符串、列表、元組等)。
  • 返回值:返回一個 反向迭代器

反轉字符串、列表、元組

  1. 反轉字符串
s = "hello"
reversed_s = reversed(s)
print(''.join(reversed_s))  # 輸出: "olleh"

Python 的 reversed() 函數返回一個反向迭代器,可以用 ''.join() 來將其轉換回字符串。

Python 的切片操作是反轉字符串最常見和高效的方法之一。通過 [::-1] 可以輕松反轉一個字符串。

def reverse_string(s: str) -> str:return s[::-1]# 示例
s = "hello"
print(reverse_string(s))  # 輸出: "olleh"
  1. 反轉列表
lst = [1, 2, 3, 4]
reversed_lst = reversed(lst)
print(list(reversed_lst))  # 輸出: [4, 3, 2, 1]
  1. 反轉元組
t = (1, 2, 3, 4)
reversed_t = reversed(t)
print(tuple(reversed_t))  # 輸出: (4, 3, 2, 1)
  • reversed() 返回的是一個反向迭代器,而不是一個直接反轉的序列。如果想得到一個新的列表或字符串,需要將其轉換。
  • reversed() 不能直接用于像整數、字典等不可反向迭代的對象

sorted() 自定義排序

sorted() 用于對任何可迭代對象進行排序,并返回一個新的排序后的列表。它不會修改原始對象,而是生成一個新的排序后的列表。可以用來排序列表、元組、字符串,甚至是字典中的鍵等。

sorted() 語法

sorted(iterable, *, key=None, reverse=False)

參數說明

  1. iterable(必需):想要排序的可迭代對象。可以是列表、元組、字典的鍵、字符串等。
  2. key(可選):一個函數,用來在排序過程中進行自定義排序。該函數接受一個元素作為輸入,并返回一個值,排序時將 基于返回值來進行排序
  3. reverse(可選):一個布爾值,默認值是 False。如果為 True,則按降序排列;如果為 False,則按升序排列
  4. 返回值:返回一個新的列表,包含已排序的元素原始的可迭代對象保持不變

使用示例

1. 基本排序:默認升序排列

numbers = [5, 3, 9, 1, 4]
sorted_numbers = sorted(numbers)
print(sorted_numbers) # [1, 3, 4, 5, 9]

2. 基本排序:降序排列

numbers = [5, 3, 9, 1, 4]
sorted_numbers_desc = sorted(numbers, reverse=True)
print(sorted_numbers_desc) # [9, 5, 4, 3, 1]

3. 自定義排序:使用 key 參數

key=len 表示按 每個字符串的長度 進行排序。

words = ["apple", "banana", "grape", "kiwi"]
sorted_words = sorted(words, key=len) 
print(sorted_words) # ['kiwi', 'apple', 'grape', 'banana']

4. 自定義排序:按某種規則進行排序

如果想根據復雜的規則進行排序,可以傳遞一個自定義的排序函數

lambda x: x[-1] 表示按照 每個字符串的最后一個字母 進行排序。

# 按照字符串的字母順序排序,但以最后一個字母為排序依據
words = ["apple", "banana", "grape", "kiwi"]
sorted_words = sorted(words, key=lambda x: x[-1]) 
print(sorted_words) # ['banana', 'kiwi', 'apple', 'grape']

5. 排序字典:根據字典的鍵

對于字典,如果希望按鍵排序,可以傳入字典的鍵。

dictionary = {"apple": 4, "banana": 1, "cherry": 2, "date": 3}
sorted_keys = sorted(dictionary) 
print(sorted_keys) # ['apple', 'banana', 'cherry', 'date']

這里 sorted(dictionary) 默認**按字典的鍵(即字符串)**升序排序。

6. 排序字典:根據字典的值

如果希望按字典的值排序,可以使用 key 來指定排序的依據。

dictionary = {"apple": 4, "banana": 1, "cherry": 2, "date": 3}
sorted_by_value = sorted(dictionary, key=lambda x: dictionary[x])
print(sorted_by_value) # ['banana', 'cherry', 'date', 'apple']

這里用 lambda x: dictionary[x]按字典的值 進行排序。

sorted() vs list.sort()

  • sorted():返回一個新的排序后的列表,原始列表不變
  • list.sort()直接在原列表上進行排序,返回值是 None,即原地排序

例如:

# 使用 sorted()(不會改變原列表)
numbers = [5, 3, 9, 1, 4]
sorted_numbers = sorted(numbers)
print(numbers)  # 原列表不變 [5, 3, 9, 1, 4]
print(sorted_numbers)  # 返回新的排序后的列表 [1, 3, 4, 5, 9]# 使用 list.sort()(會改變原列表)
numbers = [5, 3, 9, 1, 4]
numbers.sort()
print(numbers)  # 原列表已經改變,排序后的列表 [1, 3, 4, 5, 9]

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/71600.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/71600.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/71600.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

[網絡] 如何開機自動配置靜態IP,并自動啟動程序

背景: 需要固定ip地址,并且能夠自動啟動可執行文件。 流程: 1.在/etc/network/interfaces 中添加 auto eth0 iface eth0 inet staticaddress 192.168.1.100netmask 255.255.255.0gateway 192.168.1.1 2.將下面這行代碼添加自動啟動腳本 …

打造智能聊天體驗:前端集成 DeepSeek AI 助你快速上手

DeepSeek AI 聊天助手集成指南 先看完整效果: PixPin_2025-02-19_09-15-59 效果圖: 目錄 項目概述功能特點環境準備項目結構組件詳解 ChatContainerChatInputMessageBubbleTypeWriter 核心代碼示例使用指南常見問題 項目概述 基于 Vue 3 TypeScrip…

【C# 數據結構】隊列 FIFO

目錄 隊列的概念FIFO (First-In, First-Out)Queue<T> 的工作原理&#xff1a;示例&#xff1a;解釋&#xff1a; 小結&#xff1a; 環形隊列1. **FIFO&#xff1f;**2. **環形緩沖隊列如何實現FIFO&#xff1f;**關鍵概念&#xff1a; 3. **環形緩沖隊列的工作過程**假設…

Mac 清理緩存,提高內存空間

步驟 1.打開【訪達】 2.菜單欄第五個功能【前往】&#xff0c;點擊【個人】 3.【command shift J】顯示所有文件&#xff0c;打開【資源庫】 4.刪除【Containers】和【Caches】文件 Containers 文件夾&#xff1a;用于存儲每個應用程序的沙盒數據&#xff0c;確保應用程序…

Hutool - DFA:基于 DFA 模型的多關鍵字查找

一、簡介 在文本處理中&#xff0c;常常需要在一段文本里查找多個關鍵字是否存在&#xff0c;例如敏感詞過濾、關鍵詞匹配等場景。Hutool - DFA 模塊基于確定性有限自動機&#xff08;Deterministic Finite Automaton&#xff0c;DFA&#xff09;模型&#xff0c;為我們提供了…

C++STL容器之map

1.介紹 map是 C 標準模板庫&#xff08;STL&#xff09;中的一個關聯容器&#xff0c;用于存儲鍵值對&#xff08;key-value pairs&#xff09;。map中的元素是按照鍵&#xff08;key&#xff09;進行排序的&#xff0c;并且每個鍵在容器中是唯一的。map通常基于紅黑樹&#xf…

CentOS的ssh復制文件

1.前提 首先要已經連接上了對方的ssh 2.命令 scp [文件] 目標IP:目標路徑 例如&#xff1a; $PWD是一個環境變量&#xff0c;可以獲取當前絕對目錄&#xff0c;ssh上傳的時候一定要確保對方有這個目錄才行&#xff0c;不然會報錯 3.遞歸上傳 scp -r 目錄 目標IP:路徑 可以…

《Python實戰進階》專欄 No.3:Django 項目結構解析與入門DEMO

《Python實戰進階》專欄 第3集&#xff1a;Django 項目結構解析與入門DEMO 在本集中&#xff0c;我們將深入探討 Django 的項目結構&#xff0c;并實際配置并運行一個入門DEMO博客網站&#xff0c;幫助你在 Web 開發中更高效地使用 Django。Django 是一個功能強大的 Python Web…

每日一題——376. 擺動序列

題目鏈接&#xff1a;376. 擺動序列 - 力扣&#xff08;LeetCode&#xff09; 代碼&#xff1a; class Solution { public:int wiggleMaxLength(vector<int>& nums) {int curdiff 0;int prediff 0;int result 1; for(int i 0;i < nums.size()-1;i){curdiff …

DeepSeek與ChatGPT:AI語言模型的全面技術解析與對比

DeepSeek與ChatGPT:AI語言模型的全面技術解析與對比 一、誕生背景與技術演進路徑 1.1 OpenAI與ChatGPT的生態布局 ChatGPT的研發主體OpenAI成立于2015年,早期定位為非營利性研究機構,核心目標為實現通用人工智能(AGI)。其技術路徑以Transformer架構為基礎,通過堆疊參數規…

[原創](Modern C++)現代C++的關鍵性概念: 學習新算法: std::unique_copy

[作者] 常用網名: 豬頭三 出生日期: 1981.XX.XX 企鵝交流: 643439947 個人網站: 80x86匯編小站 編程生涯: 2001年~至今[共24年] 職業生涯: 22年 開發語言: C/C、80x86ASM、PHP、Perl、Objective-C、Object Pascal、C#、Python 開發工具: Visual Studio、Delphi、XCode、Eclipse…

前端(vue)學習筆記(CLASS 1):vue框架入門

1、vue上手 概念&#xff1a;vue是一個用于構建用戶界面的漸進式框架 vue的兩種使用方式&#xff1a; 1、vue的核心包開發 場景&#xff1a;局部模塊改造 2、vue核心包&vue插件工程化開發 場景&#xff1a;整站開發 1、創建實例 核心步驟 1、準備容器&#xff08;…

synchronized鎖字符串

示例一 在沒有使用synchronized鎖的情況下: import java.util.HashMap; import java.util.Map;public class NonSynchronizedSchoolExample {private static final Map<String, Integer> schoolCountMap new HashMap<>(); // 存儲每個學校的交卷數量public sta…

1.14作業

1 if($x[scheme]http||$x[scheme]https){ $ip gethostbyname($x[host]); echo </br>.$ip.</br>; if(!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {die(ip!); }echo file_get_contents($_POST[url]);可以DNS重…

Hopper架構 GEMM教程

一 使用 1.1 makefile compile:nvcc -arch=sm_90a -lcuda -lcublas -std=c++17 matmul_h100_optimal.cu -o testrun:./test加入-lcublas,不然會有函數無法被識別 二 代碼分析 2.1 kernel外參數分析 2.1.1 基本參數 constexpr int BM = 64*2;constexpr int BN = 256;cons…

DeepSeek模型快速部署教程-搭建自己的DeepSeek

前言&#xff1a;在人工智能技術飛速發展的今天&#xff0c;深度學習模型已成為推動各行各業智能化轉型的核心驅動力。DeepSeek 作為一款領先的 AI 模型&#xff0c;憑借其高效的性能和靈活的部署方式&#xff0c;受到了廣泛關注。無論是自然語言處理、圖像識別&#xff0c;還是…

數據倉庫、數據湖和數據湖倉

數據倉庫、數據湖和數據湖倉是三種常見的數據存儲和管理技術&#xff0c;各自有不同的特點和適用場景。以下是它們的詳細比較&#xff1a; 1. 數據倉庫&#xff08;Data Warehouse&#xff09; 定義&#xff1a;用于存儲結構化數據&#xff0c;經過清洗、轉換和建模&#xff…

學習aigc

DALLE2 論文 Hierarchical Text-Conditional Image Generation with CLIP Latents [2204.06125] Hierarchical Text-Conditional Image Generation with CLIP LatentsAbstract page for arXiv paper 2204.06125: Hierarchical Text-Conditional Image Generation with CLIP L…

POI pptx轉圖片

前言 ppt頁面預覽一直是個問題&#xff0c;office本身雖然有預覽功能但是收費&#xff0c;一些開源的項目的預覽又不太好用&#xff0c;例如開源的&#xff1a;kkfileview pptx轉圖片 1. 引入pom依賴 我這個項目比較老&#xff0c;使用版本較舊 <dependency><gro…

零基礎學python--------第三節:Python的流程控制語法

Python&#xff0c;浮點數 11.345(單&#xff1a;4個字節&#xff0c; 雙&#xff1a;8個字節) 。 十進制的數字25 ---> 11001 講一個小數轉化為二進制&#xff1a; 不斷的乘以2 。取整數部分。 十進制的0.625 ----> 二進制&#xff1a; 0&#xff0c; 101 。 0.3 ---…