Python實現(xiàn)對象自連接的示例詳解
在Python中,字符串可以與數(shù)字相乘。
將字符串連接到數(shù)字不起作用
在Python中,字符串和數(shù)字之間不能使用加號( + ):
prefix = "year: "
year = 1999
prefix + year
Traceback (most recent call last):
File "<python-input-4>", line 1, in <module>
prefix + year
~~~~~~~^~~~~~
TypeError: can only concatenate str (not "int") to str
您可以使用加號將兩個數(shù)字相加:
year + 1
2000
或者將兩個字符串連接起來:
prefix + str(year)
'year: 1999'
但它不適用于字符串和數(shù)字之間。
將字符串乘以數(shù)字
有趣的是,你可以將一個字符串乘以一個數(shù)字:
"ha" * 3
'hahaha'
你可以把這理解為自連接。我們將這個字符串與自身連接特定的次數(shù):
"ha" + "ha" + "ha"
'hahaha'
自連接僅適用于整數(shù)
字符串只能用整數(shù)自連接:
"ha" * 2.5
Traceback (most recent call last):
File "<python-input-2>", line 1, in <module>
"ha" * 2.5
~~~~~^~~~~
TypeError: can't multiply sequence by non-int of type 'float'
字符串相乘非整數(shù)次是沒有意義的。
有趣的是,負(fù)數(shù)*也可以*用于自連接,只是結(jié)果總是空字符串:
"ha" * -3
''
當(dāng)你將一個字符串乘以0時,也會發(fā)生同樣的情況:
"ha" * 0
''
序列通常支持自連接
任何支持字符串拼接的對象,很可能也支持自拼接。
因此,其他序列,如列表、元組和字節(jié)串,也可以進(jìn)行自連接:
[2, 1, 3] * 2
[2, 1, 3, 2, 1, 3]
(4, 5) * 3
(4, 5, 4, 5, 4, 5)
b"text " * 3
b'text text text '
自連接的實際應(yīng)用
這算是一個挺有意思的功能,但它存在的意義是什么?它真的有用嗎?
我偶爾會使用自連接來創(chuàng)建具有特定默認(rèn)值的特定大小的列表。
例如,我們可以使用自連接來創(chuàng)建一個表示一年中 12 個月的列表,以統(tǒng)計該列表中某個事物出現(xiàn)的次數(shù),并且我們希望將所有計數(shù)默認(rèn)設(shè)置為零:
[0] * 12
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
但更多時候,我使用這個功能來創(chuàng)建一個由相同字符重復(fù)特定次數(shù)的字符串。
例如,我可能想在程序的輸出部分之間打印 80 個連字符( - )。
print("-" * 80)
--------------------------------------------------------------------------------
自連接不會復(fù)制
就像在 Python 中創(chuàng)建新的數(shù)據(jù)結(jié)構(gòu)或分配變量一樣,自連接不會復(fù)制任何內(nèi)容。
在Python中,給變量賦值并不會復(fù)制該值:
a = [2, 1, 3]
b = a
Python 中的變量類似于指針。因此,更改b指向的列表也會更改a指向的列表:
b.append(4)
b
[2, 1, 3, 4]
a
[2, 1, 3, 4]
這是因為這兩個變量指向同一個對象。這就是Python中賦值操作的作用。
就像給變量賦值不會復(fù)制該值一樣,使用列表或元組的自連接也不會復(fù)制這些項。
所以,如果我們嘗試將一個包含列表的列表乘以3 ,從而將其自身連接三次:
rows = [[0, 0, 0]] * 3
最終我們會得到一個包含相同三項的列表:
rows
[[0, 0, 0], [0, 0, 0], [0, 0, 0]]
也就是說,索引0與索引1是同一個對象:
rows[0] is rows[1]
True
也就是說,如果我們修改其中一個內(nèi)部列表,所有內(nèi)部列表都會隨之改變:
rows[1][1] = 7
rows
[[0, 7, 0], [0, 7, 0], [0, 7, 0]]
這是因為它們都屬于同一個列表。
不要將可變項的列表自連接起來
與大多數(shù)操作一樣,自連接不會創(chuàng)建副本。
實際上,這意味著自連接通常只用于包含不可變項的序列,而不用于包含可變項的序列。
何時使用自連接
自連接可用于創(chuàng)建包含相同字符或相同字符序列且重復(fù)次數(shù)固定的字符串。它也適用于預(yù)先填充包含特定數(shù)量默認(rèn)值的列表。
但是自連接不會復(fù)制任何內(nèi)容,所以不要嘗試用它來創(chuàng)建可變值的列表,例如列表的列表。
到此這篇關(guān)于Python實現(xiàn)對象自連接的示例詳解的文章就介紹到這了,更多相關(guān)Python對象自連接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python Pandas數(shù)據(jù)分析工具用法實例
這篇文章主要介紹了Python Pandas數(shù)據(jù)分析工具用法實例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-11-11
詳解Django中 render() 函數(shù)的使用方法
這篇文章主要介紹了Django中 render() 函數(shù)的使用方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-04-04
對python中的 os.mkdir和os.mkdirs詳解
今天小編就為大家分享一篇對python中的 os.mkdir和os.mkdirs詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
Python集成測試提高軟件質(zhì)量關(guān)鍵步驟探究
Python是一門強大的編程語言,提供了眾多工具和庫,用于執(zhí)行高效的集成測試,本文將深入介紹Python集成測試的概念、方法和最佳實踐,并通過豐富的示例代碼演示如何提高軟件質(zhì)量和減少潛在的缺陷2024-01-01

