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ù)次是沒有意義的。
有趣的是,負數(shù)*也可以*用于自連接,只是結(jié)果總是空字符串:
"ha" * -3
''
當你將一個字符串乘以0時,也會發(fā)生同樣的情況:
"ha" * 0
''
序列通常支持自連接
任何支持字符串拼接的對象,很可能也支持自拼接。
因此,其他序列,如列表、元組和字節(jié)串,也可以進行自連接:
[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 '
自連接的實際應用
這算是一個挺有意思的功能,但它存在的意義是什么?它真的有用嗎?
我偶爾會使用自連接來創(chuàng)建具有特定默認值的特定大小的列表。
例如,我們可以使用自連接來創(chuàng)建一個表示一年中 12 個月的列表,以統(tǒng)計該列表中某個事物出現(xiàn)的次數(shù),并且我們希望將所有計數(shù)默認設置為零:
[0] * 12
[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
但更多時候,我使用這個功能來創(chuàng)建一個由相同字符重復特定次數(shù)的字符串。
例如,我可能想在程序的輸出部分之間打印 80 個連字符( - )。
print("-" * 80)
--------------------------------------------------------------------------------
自連接不會復制
就像在 Python 中創(chuàng)建新的數(shù)據(jù)結(jié)構(gòu)或分配變量一樣,自連接不會復制任何內(nèi)容。
在Python中,給變量賦值并不會復制該值:
a = [2, 1, 3]
b = a
Python 中的變量類似于指針。因此,更改b指向的列表也會更改a指向的列表:
b.append(4)
b
[2, 1, 3, 4]
a
[2, 1, 3, 4]
這是因為這兩個變量指向同一個對象。這就是Python中賦值操作的作用。
就像給變量賦值不會復制該值一樣,使用列表或元組的自連接也不會復制這些項。
所以,如果我們嘗試將一個包含列表的列表乘以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)建包含相同字符或相同字符序列且重復次數(shù)固定的字符串。它也適用于預先填充包含特定數(shù)量默認值的列表。
但是自連接不會復制任何內(nèi)容,所以不要嘗試用它來創(chuàng)建可變值的列表,例如列表的列表。
到此這篇關于Python實現(xiàn)對象自連接的示例詳解的文章就介紹到這了,更多相關Python對象自連接內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
pycharm環(huán)境下Django項目環(huán)境的搭建全過程
本文介紹了Django環(huán)境安裝與項目搭建流程,包括創(chuàng)建項目與app、路由配置、視圖編寫及常見報錯解決方法,旨在為新手提供參考和實用經(jīng)驗2025-10-10
Python結(jié)合OpenClaw編寫第一個控制程序的實戰(zhàn)指南
這篇文章將深入OpenClaw的核心概念與基本語法,徹底搞懂數(shù)據(jù)類型、配置文件、節(jié)點、主題、服務這些基礎構(gòu)件,感興趣的小伙伴可以跟隨小編一起學習一下2026-03-03
Tensorflow tensor 數(shù)學運算和邏輯運算方式
這篇文章主要介紹了Tensorflow tensor 數(shù)學運算和邏輯運算方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06

