python類型轉換深淺拷貝

1.類型轉換

1.1 int(x):轉化為一個整數,只能轉換由純數字組成的字符串

float->int

浮點型強轉整形會去掉小數點后面的數,只保留整數部分

a = 1.2
print(type(a))   #<class 'float'>
b = int(a)
print(type(b))    #<class 'int'>print(int(1.8))   #1

str->int? ?如果字符串中有數字和正負號(在開頭)以外的字符就會報錯(+/-寫在前面表示正負號,寫在后面是加減號)

a = int('123')
print(a,type(a))   #123 <class 'int'>

從控制臺輸入數字的時候可以使用強制轉換,input輸入時默認輸入的是字符串類型

age = int(input("請輸入年齡"))
if age > 18:print("成年了")

1.2 float(x):轉換為一個小數

整形轉換為浮點型會自動添加一位小數

如果字符串中由正負號,數字和小數點以外的字符,不支持轉換

print(float(11))   #11.0
print(float(-23))   #-23.0
print(float('+2.3456'))  #2.345
#print(float(10-))   報錯

1.3 str(x):將對象轉換為字符串類型,任何類型都可以轉換

浮點型轉換成str會自動去除末位為0的小數部分,保留一位小數

a = 100
print(type(a),a)   #<class 'int'> 100b = str(a)
print(type(b),b)   #<class 'str'> 100st = str(-1.8)
print(type(st),st)  #<class 'str'> -1.8st1 = str(-1.00000)
print(type(st1),st1)  #<class 'str'> -1.0st2 = str(-1.02300)
print(type(st2),st2)   #<class 'str'> -1.023

轉換列表:

list = [1,2,3]
st = str(list)
print(type(st),st)   #<class 'str'> [1, 2, 3]

1.4 eval (x):用來計算在字符串中的有效python表達式,并返回表達式的值

eval非常長強大,但不夠安全,容易被惡意修改數據

print(10+10)   #20
print('10'+'10')  #1010
print('10+10')   #10+10
print(eval('10+10'))  #20 執行運算,并返回運算值

eval()可以實現list、dict、tuple和str之間的轉換;相當于去掉字符串的引號

st1 = '[[1,2],[3,4],[5,6]]'
print(type(st1),st1)   #<class 'str'> [[1,2],[3,4],[5,6]]li = eval(st1)
print(type(li),li)   #<class 'list'> [[1, 2], [3, 4], [5, 6]]
st2 = "{'name':'panda','age':5}"
print(type(st2),st2)  #<class 'str'> {'name':'panda','age':5}
dic = eval(st2)
print(type(dic),dic)  #<class 'dict'> {'name':'panda','age':5}

1.5 tuple(x):將可迭代對象轉換為元組類型

list = [1,2,3,4]
tua = tuple(list)
print(tua,type(tua))  #(1, 2, 3, 4) <class 'tuple'>

1.6 list(x):將可迭代對象轉換為列表類型

支持轉換為list的類型:str 、tuple、dict、set

字典轉換成列表,會取鍵名作為列表的值。

集合轉化成列表會先去重,在轉換(字母無序)。

print(list('abcdef'))      #['a','b','c','d','e','f']
print(list((1,2,3,4)))   #[1,2,3,4]
print(list({'name':'panda','age':5}))    #['name','age']
print(list({'a','b','c','b'}))    #['c','b','a']

2.深淺拷貝(只針對可變對象

2.1賦值:對于列表,字典,集合這種類型,復制就等于完全共享資源,一個值的改變會完全被另一個值共享。賦值后的對象會隨著原對象一起變換。

li = [1,2,3,4]
li2 = li
print('li',li)   #li [1, 2, 3, 4]
print('li2',li2)   #li2 [1, 2, 3, 4]
li.append(5)
print('賦值后:li',li)  #賦值后:li [1, 2, 3, 4, 5]
print('賦值后:li2',li2)  #賦值后:li2 [1, 2, 3, 4, 5]

2.2淺拷貝(數據半共享)

會創建新的對象,拷貝第一層的數據,嵌套層會指向原來的內存地址

首先需要導入copy模塊

查看內存地址:id()

外層的內存地址不同,內層的內存地址相同。大多數形況下都使用淺拷貝

優點:拷貝速度快,且占用空間少,拷貝效率高。

import copy #導入copy模塊li = [1,2,3,[4,5,6]]
li2 = copy.copy(li)     #淺拷貝
print('li',li)    #li [1, 2, 3, [4, 5, 6]]
print('li2',li2)   #li2 [1, 2, 3, [4, 5, 6]]
print(id(li))   #2256239241864
print(id(li2))  #2256239241992內存地址不一樣,不是同一對象
li.append(8)
print('賦值后:li', li)  #賦值后:li [1, 2, 3, [4, 5, 6],8]
print('賦值后:li2', li2)  #賦值后:li [1, 2, 3, [4, 5, 6]]li[3].append(7)   #往嵌套列表添加元素
print('賦值后:li', li)  #賦值后:li [1, 2, 3, [4, 5, 6,7],8]
print('賦值后:li2', li2)  #賦值后:li [1, 2, 3, [4, 5, 6,7]]
print(id(li[3]))   #2288402279240
print(id(li2[3]))   #2288402279240 內存地址相同

2.3深拷貝(數據完全不共享)

外層對象和內層元素都拷貝一遍,深拷貝數據變化只影響自己本身,和原來的對象沒有關聯。

也要導入copy模塊

import copy #導入copy模塊
li = [1,2,3,[4,5,6]]
li2 = copy.deepcopy(li)
print('li',li)    #li [1, 2, 3, [4, 5, 6]]
print('li2',li2)   #li2 [1, 2, 3, [4, 5, 6]]
print(id(li))   #2704884215048
print(id(li2))  #2704884214792內存地址不一樣,不是同一對象
li.append(8)
print('賦值后:li', li)  #賦值后:li [1, 2, 3, [4, 5, 6],8]
print('賦值后:li2', li2)  #賦值后:li [1, 2, 3, [4, 5, 6]]li[3].append(7)   #往嵌套列表添加元素
print('賦值后:li', li)  #賦值后:li [1, 2, 3, [4, 5, 6,7],8]
print('賦值后:li2', li2)  #賦值后:li [1, 2, 3, [4, 5, 6,]]
print(id(li[3]))   #2704883434440
print(id(li2[3]))   #2704884215304 內存地址不同

3.可變對象

含義:存儲空間保存的數據允許被修改,這種數據就是可變類型(變量對應的值可以被修改,但是內存地址不會發生改變)

常見的可變類型:列表(list)、字典(dict)、集合(set)??

li = [1,2,3,4]
print(li,id(li))   #[1, 2, 3, 4] 1886619741320
li.append(5)    #添加元素
print(li,id(li))   #[1, 2, 3, 4, 5] 1886619741320dic = {'name':'pande','age':5}
print(dic,id(dic))     #{'name': 'pande', 'age': 5} 2103573679704
dic['name'] = 'monkey'   #修改元素
print(dic,id(dic))     #{'name': 'monkey', 'age': 5} 2103573679704set = {1,2,3,4,5}
print(set,id(set))   #{1, 2, 3, 4, 5} 2769478186152
set.remove(3)    #刪除元素
print(set,id(set))   #{1, 2, 4, 5} 2769478186152

4.不可變對象

含義:存儲空間保存的數據不允許被修改,這種數據就是不可變類型(變量對應的值不能被修改,修改的話就會生成新的值,從而分配新的內存空間)

常見的不可變類型:數值類型(int 、bool、float、complex)、字符串(str)、元組(tuple)

元組不支持新增修改和刪除操作。

n = 10
print(n,id(n))   #10 140719911371312
n = 15
print(n,id(n))   #15 140719911371472str = 'hello'
print(str,id(str))   #hello 2348660297456
str = 'world'
print(str,id(str))   #world 2348660297520tua = (1,2,3)
print(tua,id(tua))   #(1, 2, 3) 1535623178104
tua =('a','b','c')
print(tua,id(tua))   #('a', 'b', 'c') 1535623178504

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

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

相關文章

分布式光纖聲波振動技術在鉆井泄漏檢測中的應用

在石油天然氣的鉆井作業中&#xff0c;及時發現并定位泄漏點對于保障開采安全、降低環境污染以及避免經濟損失至關重要。傳統的泄漏檢測方法往往存在局限性&#xff0c;而分布式光纖聲波振動技術憑借其獨特的優勢&#xff0c;正逐漸成為鉆井過程中尋找泄漏的有力工具。 技術原理…

rtconfig.cpython-313.pyc 在 .gitignore文件中寫入 *.pyc 文件仍然沒有被忽略?

在 .gitignore 文件中添加 *.pyc 和 *.*.pyc 規則時&#xff0c;如果 .pyc 文件仍然沒有被忽略&#xff0c;可能有以下幾種原因&#xff1a; 1. 已經被 Git 跟蹤的文件 即使您在 .gitignore 中指定了忽略 .pyc 文件&#xff0c;Git 仍然會跟蹤已經被提交到版本庫中的文件。如…

機器學習---KNN算法核心原理和思路分析

文章目錄 1.算法介紹2.過擬合和欠擬合3.幾種不同的距離4.特征的歸一化處理 特此聲明&#xff1a;該內容是學習耿直哥的相關機器學習理論&#xff0c;也是文章里面的部分圖片素材的來源 1.算法介紹 KNN全稱叫做K Nearset Neighbor,翻譯之后就是K個最近的鄰居&#xff1b; 其實…

書生大模型實戰營14-MindSearch深度解析實踐

文章目錄 L2——進階島MindSearch深度解析實踐1 MindSearch 簡介2 開發環境配置2.1. 打開codespace主頁&#xff0c;選擇Blank模板進行創建2.2. 創建conda環境隔離并安裝依賴 3. 獲取硅基流動API KEY4. 啟動MindSearch4.1. 啟動后端4.2. 啟動前端 5. 部署到自己的 HuggingFace …

uniapp實現app的pdf預覽

實現效果 文件準備 static下添加該pdf文件&#xff08;下載地址&#xff1a;https://gitee.com/shallow-winds/resource_package/tree/master/%E6%96%B9%E6%B3%95%E4%B8%80/html&#xff09; 使用web-view進行展示&#xff1a; 在這里插入代碼片 <web-view :src"u…

重啟 nginx

首先確認Nginx是否已經安裝&#xff0c;并檢查它的安裝位置。 執行以下命令來檢查&#xff1a; which nginx#例如&#xff1a;顯示/usr/local/nginx/sbin/nginx方法1&#xff1a;直接使用完整路徑啟動Nginx 1.1、啟動 Nginx&#xff0c;執行命令&#xff1a; sudo /usr/loca…

java實現多圖合成mp4和視頻附件下載

java實現多圖合成mp4和視頻附件下載 在wutool中&#xff0c;封裝了視頻處理工具類&#xff0c;基于javacv和ffmpeg庫&#xff0c;實現多圖合成mp4、視頻http附件下載等。 關于wutool wutool是一個java代碼片段收集庫&#xff0c;針對特定場景提供輕量解決方案&#xff0c;只…

ollama修改監聽ip: 0.0.0.0

確認Ollama綁定IP地址 默認情況下&#xff0c;Ollama可能僅監聽本地回環地址&#xff08;127.0.0.1&#xff09;。要允許外部訪問&#xff0c;需將其配置為監聽所有IP&#xff08;0.0.0.0&#xff09;或指定IP&#xff08;如10…19&#xff09;。 修改啟動命令&#xff08;推薦…

STM32-溫濕度上傳OneNET項目

一、項目需求 使用 ESP8266 連接 OneNET 云平臺&#xff0c;并通過 MQTT 協議上傳 DHT11 獲取的溫濕度值。 二、項目框圖 三、DHT11工作原理 參考于良許嵌入式手把手教你玩轉DHT11&#xff08;原理驅動&#xff09; | 良許嵌入式 3.1 正常工作驗證 #? 上電后&#xff…

百度首頁上線 DeepSeek 入口,免費使用

大家好&#xff0c;我是小悟。 百度首頁正式上線了 DeepSeek 入口&#xff0c;這一重磅消息瞬間在技術圈掀起了驚濤駭浪&#xff0c;各大平臺都被刷爆了屏。 百度這次可太給力了&#xff0c;PC 端開放僅 1 小時&#xff0c;就有超千萬人涌入體驗。這速度&#xff0c;簡直比火…

Ubuntu:wvp-GB28181-pro安裝、運行

參考 https://doc.wvp-pro.cn 下載源碼 GitHub - 648540858/wvp-GB28181-pro: WEB VIDEO PLATFORM是一個基于GB28181-2016標準實現的網絡視頻平臺&#xff0c;支持NAT穿透&#xff0c;支持海康、大華、宇視等品牌的IPC、NVR、DVR接入。支持國標級聯&#xff0c;支持rtsp/rtm…

c++入門-------命名空間、缺省參數、函數重載

C系列 文章目錄 C系列前言一、命名空間二、缺省參數2.1、缺省參數概念2.2、 缺省參數分類2.2.1、全缺省參數2.2.2、半缺省參數 2.3、缺省參數的特點 三、函數重載3.1、函數重載概念3.2、構成函數重載的條件3.2.1、參數類型不同3.2.2、參數個數不同3.2.3、參數類型順序不同 前言…

Linux提權之計劃任務反彈shell提權(十一)

實驗環境還是一樣的 當獲取一個linux普通用戶的時&#xff0c;查看計劃任務 首先我們退出root用戶 cat /etc/crontab crontab -l 查看當前用戶命令 /var/spool/cron/crontabs/root 這個目錄是root任務文件 默認是不是root權限是 看不到 tail -f /var/log/syslog 咋們切換用…

論文解讀 | AAAI'25 Cobra:多模態擴展的大型語言模型,以實現高效推理

點擊藍字 關注我們 AI TIME歡迎每一位AI愛好者的加入&#xff01; 點擊 閱讀原文 觀看作者講解回放&#xff01; 個人信息 作者&#xff1a;趙晗&#xff0c;浙江大學-西湖大學聯合培養博士生 內容簡介 近年來&#xff0c;在各個領域應用多模態大語言模型&#xff08;MLLMs&…

ai-financial-agent - 為金融投資打造的AI代理

探索人工智能在投資研究中的應用。本項目僅用于**教育**目的&#xff0c;不用于真實交易或投資。 作者聲明&#xff1a; 本項目僅用于教育和研究目的。 不用于真實交易或投資不提供任何保證或擔保過去的表現并不代表未來的結果Creator 對經濟損失不承擔任何責任咨詢財務顧問…

Open WebUI選擇模型為空,解決辦法(for DeepSeek)

標簽&#xff1a; DeepSeek&#xff1b; Open WebUI&#xff1b; 問題&#xff1a;Open WebUI選擇模型為空&#xff0c;解決辦法 &#xff08;for DeepSeek&#xff09; 操作系統&#xff1a;Ubuntu 22 硬件&#xff1a;臺式電腦 Ubuntu 22系統&#xff0c;DeepSeek安裝成功&…

歐幾里得算法第二彈---計算多個數的最大公約數

如果要求多個數的 GCD&#xff0c;可以先求前兩個數的 GCD&#xff0c;然后用這個結果與下一個數求 GCD&#xff0c;依次類推。 為什么可以用前兩個數的 GCD 與下一個數繼續求 GCD&#xff0c;從而得到所有數的 GCD 呢&#xff1f;&#xff08;之前我不知道&#xff0c;自己也沒…

掌握 ElasticSearch 組合查詢:Bool Query 詳解與實踐

掌握 ElasticSearch 組合查詢&#xff1a;Bool Query 詳解與實踐 一、引言 (Introduction)二、Bool 查詢基礎2.1 什么是 Bool 查詢&#xff1f;2.2 Bool 查詢的四種子句2.3 語法結構 三、Bool 查詢的四種子句詳解與示例3.1 must 子句3.2 filter 子句3.3 should 子句3.4 must_no…

【練習】【類似于子集問題】力扣491. 非遞減子序列/遞增子序列

題目 非遞減子序列 給你一個整數數組 nums &#xff0c;找出并返回所有該數組中不同的遞增子序列&#xff0c;遞增子序列中 至少有兩個元素 。你可以按 任意順序 返回答案。 數組中可能含有重復元素&#xff0c;如出現兩個整數相等&#xff0c;也可以視作遞增序列的一種特殊情況…

本地部署AI模型 --- DeepSeek(二)---更新中

目錄 FAQ 1.Failed to load the model Exit code: 18446744072635812000 FAQ 1.Failed to load the model Exit code: 18446744072635812000 問題描述&#xff1a; &#x1f972; Failed to load the model Error loading model. (Exit code: 18446744072635812000). Unkn…