從零開始學Python之數據結構(字符串以及數字)

一、字符串

1.1 怎么定義字符串

字符串是Python最常用的數據結構之一。在 Python 里是用于處理文本數據的,比如存儲姓名、文章內容等文本信息 。

  • 定義方式
    • 單引號:用單引號?' '?包裹文本,如?name = 'Alice'?,單引號內可正常包含除單引號之外的字符,若要包含單引號,需進行轉義,像?sentence = 'He said, \'Hello!\''?。
    • 雙引號:用雙引號?" "?包裹文本,例如?message = "Hello, world!"?,在需要包含單引號時較為方便,如?quote = "He said, 'Hello!'"?。
    • 三重單引號:分為三重單引號?''' '''?和三重雙引號?""" """?。常用于定義多行字符串。

使用的時候兩種方式:

  • 一種雙引號里有雙引號,那么里面的雙引號就用\進行轉譯。
  • 另一種直接最外面使用單引號,里面也可以直接使用雙引號。見下圖。

?

1.2 如何使用字符串中的變量

  • 使用場景:當我們需要在字符串中插入變量的值時,可采用 f - strings 這種方式。比如有變量存儲姓名、年齡等信息,想把這些信息整合到一個描述性字符串中,就會用到。
  • 語法格式:f - strings 以?f?開頭,后面跟著用大括號?{}?包裹的變量名,即?f"{變量名}"?。示例如下:
  • name = "Alice"
    age = 25
    message = f"My name is {name} and I'm {age} years old."
    print(message)
    # 輸出:My name is Alice and I'm 25 years old.

1.3 字符串的基本操作

in?:表達式?x in s?,其中?x?是要查找的元素,s?是目標字符串。如果?x?是?s?的子字符串或字符,返回?True?,否則返回?False?。例如:

s = "hello world"
print('ll' in s)  # 輸出 True
print('abc' in s)  # 輸出 False

not in?:表達式?x not in s?,功能與?in?相反,當?x?不是?s?的子字符串或字符時,返回?True?,否則返回?False?。例如:

s = "hello world"
print('abc' not in s)  # 輸出 True
print('ll' not in s)  # 輸出 False

+?運算符:用于連接兩個字符串。將?s?和?t?兩個字符串首尾相連,生成一個新的字符串。例如:

s = "Hello"
t = "World"
result = s + t
print(result)  # 輸出 HelloWorld

*?運算符:用于字符串重復。s * t?表示將字符串?s?重復?t?次,t?必須是整數。例如:

s = "Hi"
t = 3
result = s * t
print(result)  # 輸出 HiHiHi

?

s[i]:用于獲取字符串?s?中索引為?i?的單個字符。在 Python 中,字符串索引從?0?開始。例如:

s = "hello"
print(s[1:3])  # 輸出 'el'
# 如果索引為負數,則從字符串末尾開始計數,-1 表示最后一個字符 ,如 print(s[-1]) 會輸出 'o' 。

s[i:j]:獲取字符串?s?的子串,范圍是從索引?i?(包含)到索引?j?(不包含)。例如:

s = "hello"
print(s[1:3])  # 輸出 'el'
# 如果 i 省略,默認從字符串開頭(索引 0 )開始;如果 j 省略,默認到字符串末尾 。比如 s[:3] 等價于 s[0:3] ,s[1:] 等價于 s[1:len(s)] 。

s[i:j:k]:在?s[i:j]?的基礎上,增加了步長?k?,表示每隔?k - 1?個字符取一個字符。例如:

s = "hello"
print(s[::2])  # 輸出 'hlo' ,從開頭到結尾,每隔1個字符取一個
# k 為負數時,表示反向切片。比如 s[::-1] 可以將字符串 s 反轉 ,對于 s = "hello" ,s[::-1] 輸出為 'olleh' 。

1.4 字符串的常用方法

4.1?str.count(sub[, start[, end]])

  • 功能:統計子字符串?sub?在指定字符串?str?中,位于?start(起始索引,包含)到?end(結束索引,不包含)范圍內非重疊出現的次數 。start?和?end?為可選參數,若省略,默認在整個字符串中統計。
  • 示例
s = "hello world hello"
print(s.count('hello'))  # 輸出 2
print(s.count('l', 0, 5))  # 在索引0到4范圍內統計'l'出現次數,輸出 2

4.2?str.isalnum()

  • 功能:判斷字符串?str?中的所有字符是否都是字母或數字,且字符串至少有一個字符。滿足條件返回?True?,否則返回?False?。
  • 示例
s1 = "abc123"
s2 = "abc!123"
s3 = ""
print(s1.isalnum())  # 輸出 True
print(s2.isalnum())  # 輸出 False ,因包含'!'非字母數字字符
print(s3.isalnum())  # 輸出 False ,字符串為空

4.3?str.isalpha()

  • 功能:判斷字符串?str?中的所有字符是否都是字母,且字符串至少有一個字符。滿足條件返回?True?,否則返回?False?。
  • 示例
s1 = "abc"
s2 = "abc123"
s3 = ""
print(s1.isalpha())  # 輸出 True
print(s2.isalpha())  # 輸出 False ,因包含數字
print(s3.isalpha())  # 輸出 False ,字符串為空

4.4?str.join(iterable)

  • 功能:以?str?作為分隔符,將可迭代對象?iterable(如列表、元組等,其中元素需為字符串)中的字符串拼接起來,返回拼接后的新字符串。
  • 示例
s = "-"
lst = ["apple", "banana", "cherry"]
result = s.join(lst)
print(result)  # 輸出 apple-banana-cherry

4.5?str.split(sep=None, maxsplit=-1)

  • 功能:根據分隔符?sep?對字符串?str?進行分割。若?sep?為?None,則按空白字符(空格、換行符等)分割;maxsplit?限制最多分割次數,-1?表示無限制。返回分割后的字符串列表。
  • 示例
s = "hello world python"
print(s.split())  # 輸出 ['hello', 'world', 'python']
print(s.split('l', 1))  # 按'l'分割,最多分割1次,輸出 ['he', 'lo world python']

4.6 str.startswith(prefix[, start[, end]])

  • 功能:檢查字符串?str?從索引?start(包含)到索引?end(不包含)的部分是否以指定的?prefix?開頭,滿足則返回?True,否則返回?Falsestart?和?end?為可選參數,省略時檢查整個字符串。
  • 示例
s = "hello world"
print(s.startswith('he'))  # 輸出 True
print(s.startswith('wo', 6))  # 從索引6開始檢查是否以'wo'開頭,輸出 True

二、數字類型

2.1 數字類型介紹

用途:Python 的數字類型在數學計算(如加減乘除、冪運算等)和統計(如求均值、方差等)場景中廣泛應用 。

種類

    • 整數:表示沒有小數部分的數,像?1-5?等。Python 中的整數沒有大小限制,可表示非常大或非常小的整數。
    • 浮點數:用于表示帶有小數部分的數,如?3.14-2.5?。在計算機中,浮點數采用二進制表示,可能存在精度問題,例如?0.1 + 0.2?并不精確等于?0.3?。
    • 復數:形式為?a + bj?,其中?a?是實部,b?是虛部 ,j?表示虛數單位(在 Python 中用?j?表示),例如?3 + 4j?。復數常用于科學計算、信號處理等領域。

創建方式:可以通過直接寫數字字面值(如?53.14?)創建數字,也能通過內置函數(如?int()float()?等)和運算符(如?+*?等)的運算結果來創建 。比如?a = int('5')?,b = 2 + 3?。

2.2 數字類型函數介紹

關于 Python 中數字類型常見運算如下:

算術運算:

  1. 加法(x + y:計算?x?和?y?兩個數字的總和。例如?3 + 5?結果為?8?,可以用于整數、浮點數運算,也支持不同數字類型混合運算,如?3 + 2.5?結果為?5.5?。
  2. 減法(x - y:求?x?與?y?的差值。比如?7 - 4?結果是?3?。
  3. 乘法(x * y:計算?x?和?y?的乘積。像?4 * 6?等于?24?。
  4. 除法(x / y:返回?x?除以?y?的商,結果是浮點數。例如?9 / 2?結果為?4.5?。
  5. 整除(x // y:得到?x?除以?y?的商的整數部分,舍去小數部分。如?9 // 2?結果是?4?。
  6. 取余(x % y:求出?x?除以?y?的余數。例如?9 % 2?結果為?1?。

符號運算:

  1. 取反(-x:改變數字?x?的符號,正數變為負數,負數變為正數 。比如?x = 5?,-x?就是?-5?;x = -3?,-x?則是?3?。
  2. 保持不變(+x:對數字?x?不做任何改變,x?是多少,+x?就是多少 。例如?x = 7?,+x?依然是?7?。

數值處理運算:

  1. abs(x):返回數字?x?的絕對值,若?x?是整數或浮點數,就是其到原點的距離;若?x?是復數,則返回復數的模。例如?abs(-5)?結果為?5?,abs(3 + 4j)?結果為?5.0?。
  2. int(x):將?x?轉換為整數。若?x?是浮點數,會向下取整,如?int(3.8)?結果是?3?;若?x?是字符串,只要字符串內容是合法整數形式(如?'5'?),就能轉換為對應整數。
  3. float(x):把?x?轉換為浮點數。若?x?是整數,會在末尾添加?.0?,如?float(5)?結果是?5.0?;若?x?是字符串,只要字符串內容是合法數字形式(如?'3.14'?),就能轉換為浮點數。
  4. complex(re, im):創建一個復數,實部為?re?,虛部為?im?,im?默認為?0?。比如?complex(3)?得到?3+0j?,complex(3, 4)?得到?3 + 4j?。
  5. c.conjugate():對于復數?c?,返回其共軛復數,即實部不變,虛部取反。例如復數?c = 3 + 4j?,c.conjugate()?結果是?3 - 4j?。

2.3 數字類型轉換

Python 是?強類型編程語言,意味著變量的類型一旦確定,就不會自動進行類型轉換(除非是顯式操作),不同類型的數據在進行運算時,不會像弱類型語言那樣自動隱式轉換,以保證數據類型的安全性和嚴謹性 。

(1)類型查看

使用?type()?函數可以獲取對象的類型。例如:

a = 5
print(type(a))  # 輸出 <class 'int'>
b = 3.14
print(type(b))  # 輸出 <class 'float'>

(2)類型轉換

  • int():用于將符合條件的值轉換為整數。可以將浮點數轉換為整數(向下取整,如?int(3.8)?結果為?3?);也能將表示整數的字符串(如?'5'?)轉換為整數 ,但字符串內容必須是合法整數形式,否則會報錯。
  • float():可把整數或表示數字的字符串轉換為浮點數。整數轉換時會在末尾添加?.0?,如?float(5)?結果是?5.0?;只要字符串內容是合法數字形式(如?'3.14'?)就能轉換為浮點數。

2.4 數字與字符串轉換

(1)數字轉字符串

使用?str()?函數可以將數字轉換為字符串。無論是整數、浮點數還是復數,都能通過該函數轉換。例如:

num_int = 5
num_float = 3.14
num_complex = 2 + 3j
print(str(num_int))  # 輸出 '5'
print(str(num_float))  # 輸出 '3.14'
print(str(num_complex))  # 輸出 '(2+3j)'

(2)字符串轉整數

int()?函數用于將字符串轉換為整數,但要求字符串的內容必須是合法的整數表示形式,比如?'123'?。如果字符串中包含非數字字符(除了正負號 ),轉換時就會報錯。示例如下:

s1 = '10'
s2 = 'abc'
print(int(s1))  # 輸出 10
# print(int(s2))  # 會報錯,因為 'abc' 不是合法整數形式

注意:int()只能將只含整數的字符串轉換,否則報錯。

三、補充

Python、Java 都屬于強類型編程語言。在這類語言中,每個變量都有明確且固定的數據類型,一旦定義好就不能隨意改變。

3.1 類型穩定性

數據類型不會因為運算等操作而自動改變。例如在 Python 中,整數?5?與浮點數?3.14?相加,5?不會自動轉換為浮點數再運算,而是系統會根據規則將整數隱式轉換為浮點數后進行運算,但這不是變量類型中途改變,而是遵循語言的運算規則。又如在 Java 中,定義?int a = 5;?,a?的類型始終是?int?,不會因為參與運算就變成其他類型。

3.2 類型轉換方式

若要改變數據類型,必須通過顯式的類型轉換操作。在 Python 中,使用?int()float()str()?等函數進行轉換;在 Java 中,使用強制類型轉換(如?(int)3.14?把?3.14?強制轉換為整數 )或者自動裝箱拆箱機制(針對基本數據類型和包裝類之間)等方式。 顯式轉換能讓開發者清楚知道類型變化,增強代碼的可讀性和穩定性。

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

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

相關文章

Navicat 全量增量數據庫遷移

在使用 Navicat 進行數據庫遷移時&#xff0c;除了常見的“全量遷移”&#xff08;一次性遷移所有數據和結構&#xff09;&#xff0c;有時還需要支持 增量遷移&#xff08;只遷移新增或修改的數據&#xff09;。下面我將詳細講解如何通過 Navicat 實現&#xff1a;&#x1f50…

css初學者第五天

<1>css的三大特性1.1 層疊性相同選擇器給設置相同的樣式&#xff0c;此時一個樣式就會覆蓋&#xff08;層疊&#xff09;另一份沖突的樣式。層疊式主要解決樣式沖突的問題。層疊性原則&#xff1a;-樣式沖突&#xff0c;遵循的原則是就近原則&#xff0c;哪個樣式離結構近…

從神經網絡語言模型(NNLM)到Word2Vec:自然語言處理中的詞向量學習

語言模型 語言(人說的話)模型(完成某個任務) 任務: 概率評估任務:在兩句話中&#xff0c;判斷哪句話出現的概率大(哪句話在自然語言中更合理)生成任務:預測詞語,我明天要____ 統計語言模型 用統計的方法解決上述的兩個任務 核心思想 給定一個詞序列&#xff0c;計算該序列出現的…

PID學習筆記5-雙環PID

在學習江協科技PID課程時&#xff0c;做一些筆記&#xff0c;對應視頻3-1&#xff0c;對應代碼&#xff1a;1313-雙環PID定速定位置控制-代碼封裝main.c:#include "stm32f10x.h" // Device header #include "Delay.h" #include "OLE…

C#vb.net中Interlocked類實現原子操作加減計算,涵蓋狀態切換、計數控制等常見場景

以下是 C# 中使用 int 類型結合 Interlocked 類實現原子操作的完整示例&#xff0c;涵蓋狀態切換、計數控制等常見場景&#xff1a; 完整代碼示例csharp using System; using System.Threading;/// <summary> /// 基于整數類型的原子操作工具類&#xff08;線程安全&am…

RCL 2025 | LLM采樣機制的新視角:來自處方性偏移的解釋

1. 導讀 大型語言模型&#xff08;Large Language Models, LLMs&#xff09;在自主決策場景中的應用日益廣泛&#xff0c;它們需要在龐大的行動空間中進行響應采樣&#xff08;response sampling&#xff09;。然而&#xff0c;驅動這一采樣過程的啟發式機制仍缺乏深入研究。本…

08 ABP Framework Blazor UI

ABP Framework Blazor UI 架構 overview ABP Blazor UI 系統構建在 Blazorise 組件庫之上&#xff0c;為構建數據驅動應用提供結構化方法&#xff0c;包含 CRUD 操作、主題和本地化的一致模式。 #mermaid-svg-QAvWlELsLhZgYXHu {font-family:"trebuchet ms",verdana,…

JUC學習筆記-----LinkedBlockingQueueConcurrentLinkedQueueCopyOnWriteArrayList

LinkedBlockingQueue基本的入隊出隊初始化public class LinkedBlockingQueue<E> extends AbstractQueue<E>implements BlockingQueue<E>, java.io.Serializable {// 靜態內部類 Node&#xff0c;用于存儲隊列元素及維護節點間關系static class Node<E>…

小杰python高級(six day)——pandas庫

1.數據可視化用于繪制 DataFrame 數據圖形&#xff0c;它允許用戶直接從 DataFrame 創建各種類型的圖表&#xff0c;而不需要使用其他繪圖庫&#xff08;底層實際上使用了 Matplotlib&#xff09;。&#xff08;1&#xff09;plotDataFrame.plot(*args, **kwargs)功能&#xff…

第十六屆藍橋杯青少組C++省賽[2025.8.9]第二部分編程題(1 、慶典隊列)

參考程序&#xff1a;#include <iostream> using namespace std;int main() {int n, A;cin >> n >> A; // 輸入&#xff1a;n 和 A&#xff0c;用空格隔開cout << n / A; // 整數相除&#xff0c;自動向下取整return 0; }

C++進階:智能指針

目錄1. RAII與智能指針2. C庫中的智能指針2.1 智能指針auto_ptr2.2 智能指針unique_ptr2.3 智能指針shared_ptr3. shared_ptr的循環引用4. 智能指針的定值刪除器1. RAII與智能指針 上一篇文章學習了異常相關的知識&#xff0c;其中遺留了一個異常安全相關的問題。那就是異常的拋…

Tkinter 實現按鈕鼠標懸浮提示:兩種方案(繼承Frame與不繼承)

在 Tkinter 桌面應用開發中&#xff0c;為按鈕添加“鼠標懸浮提示”是提升用戶體驗的常用功能——無需點擊&#xff0c;只需將鼠標挪到按鈕上方&#xff0c;就能自動顯示按鈕功能說明。本文將詳細介紹兩種實現方案&#xff1a;不繼承 Frame 類&#xff08;快速簡潔版&#xff0…

20250814 最小生成樹總結

引子 啊啊額&#xff0c;從一張圖里抽出幾條邊&#xff0c;組成一棵樹&#xff0c;無環n?1n-1n?1條邊&#xff0c;就是生成樹。那么邊權和最小的生成樹就叫最小生成樹&#xff0c;最大生成樹同理。 kruskal最小生成樹 要求kruskal最小生成樹&#xff0c;我們首先用結構體數組…

數據大集網:實體店獲客引流的數字化引擎,解鎖精準拓客新密碼?

?在實體店面臨流量焦慮、獲客成本攀升的當下&#xff0c;實體店獲客引流工具的重要性愈發凸顯。如何在激烈的市場競爭中精準觸達目標客戶、構建可持續的客流增長模式&#xff1f;數據大集網憑借其創新的智能獲客體系與全鏈路服務能力&#xff0c;正成為萬千實體店突破增長瓶頸…

nginx --ssl證書生成mkcert

github https://github.com/FiloSottile/mkcert/releases網盤下載地址 https://pan.baidu.com/s/1XI0879pqu7HXZMnmQ9ztaw 提取碼: 1111windows使用示例

守拙以致遠:個人IP的長青之道|創客匠人

2025年被認為是AI應用全面爆發的一年。各種人工智能工具在寫作、制圖、剪輯等領域廣泛使用&#xff0c;大大提升了個人和團隊的工作效率。對于個人IP而言&#xff0c;這類工具的出現確實帶來了新的機會&#xff0c;但也伴隨著一種現象——一些人開始過度依賴甚至神化AI&#xf…

USB 3.0 LTSSM 狀態機

USB2.0在電源供應后&#xff0c;通過Pull Up D-來決定枚舉LS&#xff0c;Pull Up D有一個USB高速握手過程&#xff0c;來決定HS FS。USB3.0則會通過鏈路訓練&#xff08;Link Training&#xff09;&#xff0c;來準備USB3.0通信。每當我們插上USB線的時候&#xff0c;對于3.0的…

MySQL窗口函數與PyMySQL以及SQL注入

MySQL窗口函數與PyMySQL實戰指南&#xff1a;從基礎到安全編程 引言 在數據處理和分析領域&#xff0c;MySQL作為最流行的關系型數據庫之一&#xff0c;其窗口函數功能為數據分析提供了強大的支持。同時&#xff0c;Python作為數據分析的主要語言&#xff0c;通過PyMySQL庫與My…

高級項目——基于FPGA的串行FIR濾波器

給大家安利一個 AI 學習神站&#xff01;在這個 AI 卷成紅海的時代&#xff0c;甭管你是硬核開發者還是代碼小白&#xff0c;啃透 AI 技能樹都是剛需。這站牛逼之處在于&#xff1a;全程用 "變量名式" 幽默 生活化類比拆解 AI&#xff0c;從入門到入土&#xff08;啊…

JPrint免費的Web靜默打印控件:PDF打印中文亂碼異常解決方案

文章目錄JPrint是什么&#xff1f;中文亂碼&#xff08;Using fallback font xxx for xxxx&#xff09;1.字體嵌入2.客戶機字體安裝開源地址相關目錄導航使用文檔端口號修改代理使用場景打印服務切換中文亂碼解決方案 JPrint是什么&#xff1f; JPrint是一個免費開源的可視化靜…