字串和常用資料結構

2021-09-25 06:14:33 字數 3875 閱讀 4153

第二次世界大戰促使了現代電子計算機的誕生,當初的想法很簡單,就是用計算機來計算飛彈的彈道,因此在計算機剛剛誕生的那個年代,計算機處理的資訊主要是數值,而世界上的第一台電子計算機eniac每秒鐘能夠完成約5000次浮點運算。隨著時間的推移,雖然對數值運算仍然是計算機日常工作中最為重要的事情之一,但是今天的計算機處理得更多的資料都是以文字資訊的方式存在的,而python表示文字資訊的方式我們在很早以前就說過了,那就是字串型別。所謂字串,就是由零個或多個字元組成的有限序列,一般記為

我們可以通過下面的**來了解字串的使用。

def main():

str1 = 'hello, world!'

# 通過len函式計算字串的長度

print(len(str1)) # 13

# 獲得字串首字母大寫的拷貝

print(str1.capitalize()) # hello, world!

# 獲得字串變大寫後的拷貝

print(str1.upper()) # hello, world!

# 從字串中查詢子串所在位置

print(str1.find('or')) # 8

print(str1.find('****')) # -1

# 與find類似但找不到子串時會引發異常

# print(str1.index('or'))

# print(str1.index('****'))

# 檢查字串是否以指定的字串開頭

print(str1.startswith('he')) # false

print(str1.startswith('hel')) # true

# 檢查字串是否以指定的字串結尾

print(str1.endswith('!')) # true

# 將字串以指定的寬度居中並在兩側填充指定的字元

print(str1.center(50, '*'))

# 將字串以指定的寬度靠右放置左側填充指定的字元

print(str1.rjust(50, ' '))

str2 = 'abc123456'

# 從字串中取出指定位置的字元(下標運算)

print(str2[2]) # c

# 字串切片(從指定的開始索引到指定的結束索引)

print(str2[2:5]) # c12

print(str2[2:]) # c123456

print(str2[2::2]) # c246

print(str2[::2]) # ac246

print(str2[::-1]) # 654321cba

print(str2[-3:-1]) # 45

# 檢查字串是否由數字構成

print(str2.isdigit()) # false

# 檢查字串是否以字母構成

print(str2.isalpha()) # false

# 檢查字串是否以數字和字母構成

print(str2.isalnum()) # true

str3 = ' [email protected] '

print(str3)

# 獲得字串修剪左右兩側空格的拷貝

print(str3.strip())

if __name__ == '__main__':

main()

除了字串,python還內建了多種型別的資料結構,如果要在程式中儲存和運算元據,絕大多數時候可以利用現有的資料結構來實現,最常用的包括列表、元組、集合和字典。

下面的**演示了如何定義列表、使用下標訪問列表元素以及新增和刪除元素的操作。

def main():

list1 = [1, 3, 5, 7, 100]

print(list1)

list2 = ['hello'] * 5/

print(list2)

# 計算列表長度(元素個數)

print(len(list1))

# 下標(索引)運算

print(list1[0])

print(list1[4])

# print(list1[5]) # indexerror: list index out of range

print(list1[-1])

print(list1[-3])

list1[2] = 300

print(list1)

# 新增元素

list1.insert(1, 400)

list1 += [1000, 2000]

print(list1)

print(len(list1))

# 刪除元素

list1.remove(3)

if 1234 in list1:

list1.remove(1234)

del list1[0]

print(list1)

# 清空列表元素

list1.clear()

print(list1)

if __name__ == '__main__':

main()

和字串一樣,列表也可以做切片操作,通過切片操作我們可以實現對列表的複製或者將列表中的一部分取出來建立出新的列表,**如下所示。

def main():

fruits += ['pitaya', 'pear', 'mango']

# 迴圈遍歷列表元素

for fruit in fruits:

print(fruit.title(), end=' ')

print()

# 列表切片

fruits2 = fruits[1:4]

print(fruits2)

# fruit3 = fruits # 沒有複製列表只建立了新的引用

# 可以通過完整切片操作來複製列表

fruits3 = fruits[:]

print(fruits3)

fruits4 = fruits[-3:-1]

print(fruits4)

# 可以通過反向切片操作來獲得倒轉後的列表的拷貝

fruits5 = fruits[::-1]

print(fruits5)

if __name__ == '__main__':

main()

和字串一樣,列表也可以做切片操作,通過切片操作我們可以實現對列表的複製或者將列表中的一部分取出來建立出新的列表,**如下所示。

def main():

fruits += ['pitaya', 'pear', 'mango']

# 迴圈遍歷列表元素

for fruit in fruits:

print(fruit.title(), end=' ') # 輸出元素的題目

print()

# 列表切片

fruits2 = fruits[1:4]

print(fruits2) #從第乙個輸出到第三個

# fruit3 = fruits # 沒有複製列表只建立了新的引用

# 可以通過完整切片操作來複製列表

fruits3 = fruits[:]

print(fruits3)

fruits4 = fruits[-3:-1]

print(fruits4)

# 可以通過反向切片操作來獲得倒轉後的列表的拷貝

fruits5 = fruits[::-1] #從倒數第乙個開始複製整個元組的元素

print(fruits5)

if __name__ == '__main__':

main()

字串和常用資料結構

str1 123abc str2 123abcdefg print str1 str2 123abc,123abcdefg print str1 2 123abc123abc print str1 in str2 true print str1 2 3 print str2 2 5 23a prin...

01常用資料結構 字串

leetcode 第 242 題 給定兩個字串 s 和 t,編寫乙個函式來判斷 t 是否是 s 的字母異位詞。解題思路 乙個重要的前提 假設兩個字串只包含小寫字母 小寫字母一共也就 26 個,因此 可以利用兩個長度都為 26 的字元陣列來統計每個字串中小寫字母出現的次數,然後再對比是否相等 可以只利...

資料結構 字串

1 字串 include string.h include stdio.h include stdlib.h include math.h include time.h define ok 1 define error 0 define true 1 define false 0 define ma...