日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Day05-循环和列表字符串、元组和字典

發布時間:2023/12/20 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Day05-循环和列表字符串、元组和字典 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、字符串

字符串就是由若干個不同的unicode字符組成的不可變序列

1 .字符串創建

#單引號字符串 str1 = '天要下雨,娘要嫁人,由他去吧' str2 = str() #空串 str3 = str([10,20,30]) ? #雙引號字符串 str2 = "天要下雨,娘要嫁人,由他去吧" ? #三引號字符串 多行字符串 str3 = ''' 好雨知時節 當春乃發生 ''' str4 = """ 隨風潛入夜 潤物細無聲 ""

2.獲取字符

因為是不可變序列,所以不能修改單個字符;凡是修改字符串的操作都產生新串

str1 = '天要下雨,娘要嫁人,由他去吧' print(str1[0],str1[-1]) #天 吧

3.字符串轉義

  • 常見轉義字符

    轉移字符說明轉移字符說明
    \'單引號\"雙引號
    \n換行\r回車
    \ttab\\\
  • 原生字符

    如果在字符串中不把\當做轉移字符,可以使用

    str1 = r'c:\wh1803\course\1' print(str1) #c:\wh1803\course\1

4.序列通用操作

#1 字符串拼接 #對于字符串字面值,只要相鄰兩個字符串中間沒有其他字符就會自動拼接為一個字符串 str1 = '中美達成共識''不打貿易戰' print(str1) #中美達成共識不打貿易戰 ? #其他情況使用+運算符拼接字符串 str1 = '你好' str2 = ' 樹先生' print(str1 + '世界') print(str1 + str2) ? #2.字符串重復 str1 = '汪' * 3 print(str1) #汪汪汪 ? #3.成員操作 str1 = '天要下雨,娘要嫁人,由他去吧' if '天' in str1:print('是成員') else:print('不是成員') ? #4.字符串截取(切片) str1 = '123456' print(str1[0:2]) #'12' print(str1[1:]) #'23456' print(str1[::2]) #'135' print(str1[:]) #'123456' print(str1[::-1]) #'654321' ? #5.字符串長度 print(len(str1))

4 字符串常用函數

4.1 字符串查找和替換

str1 = 'a fox jumped over the fence'

方法名說明示例
str.count(sub,start=0,end=len(string))查找子串sub出現的次數;start從指定下標開始查,end結束下標str1.count('f')
str.find(str, beg=0, end=len(string))從左向右檢測字符串中是否包含子字符串 str,如果包含返回下標,否則返回-1。beg和end是可選參數,指定查找范圍str1.find('fox')
str.rfind(sub[, start[, end]])從右向左檢測字符串中是否包含sub子串,包含返回子串的下標,否則返回-1str1.rfind('fox')
str.index(sub[, start[, end]])作用類似find,但子串sub不存在會報錯ValueErrorstr1.index('fox')
str.rindex(sub[, start[, end]])從右向左檢測,類似rfind,會報ValueErrorstr1.rindex('fox')
str.replace(old, new[, count])返回一個新字符串,原串中的old被替換為new,可選參數count指定替換次數。str1.replace('a','many')

4.2 字符串分隔和組合

方法名說明示例
str.split([sep[, num=count(sep)]])將字符串拆分為以sep為分隔符的列表,如果指定num,則最多拆分num次str1.split(' ')
str.rsplit([sep[, num=count(sep)]])從右向左拆分?
str.partition(seq)將字符串拆分為一個有三個元素的元組(seq前的字符串,seq,seq后的字符串)。?
str.rpartion(seq)同上?
str.splitlines([keepends])拆分一個包含多行的字符串,以每行為一個元素返回一個列表。keepends是一個True字符或非零整數,表示保留行尾標志(即換行符)?
str.join(seq)以指定字符串str作為分隔符,將seq對象中所有的元素(字符串表示)合并為一個新的字符串;seq可以是字符串、列表等?

4.3 字符串判斷

方法說明示例
str.isalpha()判斷字符串是否由字母構成并且只包含字母,是返回True,否返回Falsestr1.isalpha()
str.isalnum()檢測字符串是否由字母和數字組成,如果都是數字或字母返回True,否則返回False?
str.isdigit()檢測字符串是否由數字構成,可檢測byte類型?
str.isdecimal()檢測字符串是否由數字構成?
str.isnumeric()檢測字符串是否由數字構成, 可以檢測漢字數字:十?
str.isspace()檢測字符串是否只有空格或tab構成?
str.islower()檢測字符串中的字母字符是否全部由小寫字母組成?
str.isupper()檢測字符串中的字母字符是否全部由大寫寫字母組成?
str.startswith(suffix[, start[, end]])用于判斷字符串是否以指定子字符串開頭,如果是則返回True,否則返回False。?
str.endswith(suffix[, start[, end]])用于判斷字符串是否以指定子字符串 結尾,如果是則返回True,否則返回False。?

4. 4字符串轉換

方法說明示例
str.lower()字符串轉小寫?
str.upper()字符串轉大寫?
str.swapcase()把字符串中的大小寫字母互換,大寫轉換成小寫,小寫轉換成大寫。不去管非字母類字符。?
str.capitalize()將字符串的第一個字符轉換為大寫, 其余轉換為小寫?
str.title()字符串中每個單詞的首字母大寫,其余小寫。?
str1.center(width,[fillchar])用指定寬度居中顯示字符串,如果字符串無法填滿width,將用指定字符填充字符串,默認用空格填充str1.center(80,'*')
str.ljust(width[, fillchar])用指定寬度居左顯示字符串?
str.rjust(width[, fillchar])用指定寬度居右顯示字符串?
str.lstrip([chars])去除字符串左邊指定的字符,默認是去除空格?
str.rstrip([chars])去除字符串左邊指定的字符,默認是去除空格?
str.strip([chars])去除字符串兩邊邊指定的字符,默認是去除空格?

4.5 其它方法

#1. 將其他類型轉換為字符串 print(str(90)) #'90' print(str([20,30])) #'[20,30]' ? #2 ord(x) 返回一個字符所對應的碼值 print(ord('a')) #97 print(ord('中')) #20013 ? #3 chr(x) 輸入一個unicode碼,返回一個對應的字符。 print(chr(20013)) #中 ? #eval,將字符串當做代碼執行 age = 1 print(eval('age + 3')) # 4 print(eval('+123')) ? #123 print(eval('3 + 2')) ? #5 ? #有安全問題 eval("__import__('os').system('dir')") #顯示當前目錄的文件列表 ? #4 repr(x) 返回一個對象的String格式,適合機器執行 a = [20,30] s1 = repr(a) list1 = eval(s1) list2 = str(a) print(a == list1) print(a == list2)

5. 字符串格式化

  • 用%格式化

    %[flags][width][.precision]typecode flags:對其方式,-左對齊 +右對齊(默認),0表示用0填充,默認是用空格填充 width:所占寬度,單位是列 .precision: 精度,如果帶小數點,可以指定帶幾位小數,指定后會四舍五入 typecode: d 將數值轉換為整型顯示;f 將數值轉換為浮點數顯示 s將數值轉換為字符串顯示 #大家好,我叫 ? 王尼瑪,我今年35歲了,我有5000000.69 print("大家好,我叫%+6s,我今年%d歲了,我有%10.2f" % ('王尼瑪',35,5000000.687))
  • 用format格式化

    [[fill]align][sign][#][width][.precision][type] fill: 填充字符,可選 align: 對齊方式 ?<左對齊 ?>右對齊 ?^居中對齊 sign:顯示符號,+正數顯示正號,負數顯示符號;-正數不顯示符號,負數顯示符號 #: 對于2、8、16進制會顯示0b 0o 0x width: 寬度 , 千分位分隔符 .precision:精度 type: s字符串 ?d整型 ?f浮點數 ? tp1 = "I am {}, age {}, {}".format("seven", 18, 'alex') tp2 = "I am {name}, age {age}, really {name}".format(name="seven", age=18) tp3 = "I am {:s}, age {:d}, money {:.0f}".format("seven", 18, 88888.1) print(tp1) #I am seven, age 18, alex print(tp2) #I am seven, age 18, really seven print(tp3) #I am seven, age 18, money 88888

二、字節

在python3中最重要的特性是對文本和二進制數據做了更加清晰的區分,文本總是Unicode,由字符類型表示,而二進制數據則由byte類型表示,python3不會以任意隱式方式混用字節型和字符型,也因此在python3中不能拼接字符串和字節包(python2中可以,會自動進行轉換),也不能在字節包中搜索字符串,也不能將字符串傳入參數為字節包的函數。

Bytes 對象是由單個字節作為基本元素(8位,取值范圍 0-255)組成的序列,為不可變對象。 bytes對象只負責以二進制字節序列的形式記錄所需記錄的對象,至于該對象到底表示什么(比如到底是什么字符)則由相應的編碼格式解碼所決定。Python3中,bytes通常用于網絡數據傳輸、二進制圖片和文件的保存等等。可以通過調用bytes()生成bytes實例,其值形式為 b'xxxxx',其中 'xxxxx' 為一至多個轉義的十六進制字符串(單個 x 的形式為:\x12,其中\x為小寫的十六進制轉義字符,12為二位十六進制數)組成的序列,每個十六進制數代表一個字節(八位二進制數,取值范圍0-255),對于同一個字符串如果采用不同的編碼方式生成bytes對象,就會形成不同的值.

1 創建字節

#創建字節 b1 = b'hello' b2 = b"ello" b3 = b'''hello''' b4 = bytes('中文','utf-8')

2 設置python文件編碼格式

# -*- coding: utf-8 -*- import sys sys.setdefaultencoding('utf-8') #修改系統默認編碼格式

3 字符串和字節的轉換

#字符串轉字節 s1 = "中文" s2 = s1.encode('utf-8') #str.encode() print(type(s2)) #<class 'bytes'> print(s2) #b'\xe4\xb8\xad\xe6\x96\x87' ? #字節轉字符串 s3 = s2.decode('utf-8') #bytes.decode() print(type(s3)) #<class 'str'> print(s3) #中文

三、元組

元組和列表相似,但元組屬于不可變序列,所以元組:

  • 不能修改元素的值

  • 元組用()表示

1.1 創建元組

t1 = () ? #創建一個空元組 #或者 t1 = tuple() #空元組 ? t2 = (1,) #創建帶有一個元素的元組,后面的逗號是必須的,否則無法區分是()表達式還是元組 或者:t2 = 1, t3 = (1,4,True,'hello') t4 = 10,20,30 #t4 = (10,20,30) t5 = tuple('abc')

1.2 成員訪問

t1 = (10,7,12,23) print(t1[0]) #print(t1[4]) 下標越界 IndexError ? t2 = (1,2,[4,5]) t2[2][0] = 10 #元組的元素無法修改,但元素如果是可變列表,則列表元素是可以修改的

1.3 通用操作

#1.連接 t1 = (1,2,3) t2 = (4,5,6) t3 = t1 + t2 print(t3) #(1,2,3,4,5,6) ? #2.重復 print(t1 * 2) #(1,2,3,1,2,3) ? #3.切片 print(t3[0:3]) #(1,2,3) print(t3[3:]) ? #(4,5,6) print(t3[-1::-1]) (6,5,4,3,2,1) ? #4.成員運算符 print(3 in t3) #True print(2 not in t3) #False ? #5.元素個數 print(len(t3)) ? #6.最值 print(max(t3)) #6 print(min(t3)) #1

1.4 元組其它操作

  • 元組和列表的轉換

    t1 = (10,20,30) l1 = [1,2,3] ? #列表轉元組 print(tuple(l1)) ? #元組轉列表 print(list(t1))
  • 查找

    t1 = (10,20,30,10) print(t1.index(20)) #查找值等于20的第一個元素 print(t1.count(10)) #返回元組中10的個數
  • 遍歷

    t1 = (10,20,30,10) for value in t1:print(value)#同時獲取下標和值 for index,value in enumerate(t1):print(index, value) ? #通過下標遍歷 for i in range(len(t1)):print(t1[i])

    1.5 二維元組

t1 = ((1,2,3),(4,5,6)) ? #遍歷 for elem in t1:for value in elem:print(value, end = ' ')print('')

1.6 序列的解包

#元組解包 #變量個數和元素個數一致 t1 = (11,20) a, b = t1 print(a,b) #11 20 ? a, b = 2, 3 ? a,b,c = (1,2,3) ? #變量個數和元素個數不同 #a=10,c=50,_獲取(20,30) a, *_, c = 10,20,30,50 print(a,c,_) #10 50 [20, 30] ? #a=10,b=20,c獲得剩余的元素 a, b, *c = 10,20,30,50 print(a,b,c) #10 20 [30, 50] ? #*解包 print(*(1,2,3)) # 1 2 3 ? #range解包 a, b, c = range(3) #a=0,b=1,c=2 ? #列表解包 a,*_b,c = [1,2,3,4,5] print(a,_b,c) # 1 [2, 3, 4] 5 ? #字符串解包 a,b,c = '123' print(a,b,c) # a='1',b='2',c='3' ? ? # *解包形式 a = (1,2,3,4) print(*a) print(*[1,2,3,4])

###

四、字典

字典不屬于序列,元素存放無序,是通過哈希方式進行數據存取的,字典是一個可變容器,字典中保存一個個的鍵值對: key : value。我們通過key來獲取對應的值,很類似我們的漢語字典。

  • 字典中鍵必須是唯一的,必須是不可變類型

  • 字典查找速度比較快

2.1 字典的創建

d1 = {} #空字典 d1 = dict() #空字典 d2 = {'name':'麻辣龍蝦','taste':'美味'} d3 = dict(a=1,b=2) d4 = dict([('a', 1),('b', 2)]) d5 = dict({'a':1,'b':2})

2.2 字典操作

#存儲多個學生的成績 dict1 = {"jack":78,"hanmeimei":99,"lilei":60} print(dict1) ? #1.元素訪問 #獲取 ? 語法:字典名[key] print(dict1["hanmeimei"]) ? #print(dict1["tom"]) #KeyError: 'tom' ? #字典名.get() result = dict1.get("lilei",'1') # 如果沒有lilei這個鍵,返回默認值1,不會報錯 print(result) ? #2.添加:當指定的鍵不存在的時候,則表示添加 dict1["tom"] = 70 print(dict1) #但是,如果鍵已經存在,則表示修改value dict1["jack"] = 50 print(dict1) ? #3. 刪除 pop 刪除并返回指定鍵對應的值 #注意:通過鍵,直接刪除整個鍵值對 dict1.pop("jack") print(dict1) ? del dict1['lilei'] #刪除鍵值對,不返回值 dict1.clear() #清空字典 del dict1 #刪除整個字典 ? #4 字典合并 a = {1:'hello'} b = {2:'world'} a.update(b) print(a) ? #5.遍歷 dict2 = {"jack":78,"hanmeimei":99,"lilei":60} ? #方式一:只獲取鍵 for key in dict2:value = dict2[key]print(key,value) ? #方式二:只獲取值 #values,得到的結果是一個列表,當做列表處理 print(dict2.values()) ? for value in dict2.values():print(value) ? ? #方式三:同時獲取鍵和值 #items,得到的結果是一個列表,列表中的元素是元組 print(dict2.items()) #[('jack', 78), ('hanmeimei', 99), ('lilei', 60)] ? for key,value in dict2.items():print(key,value) ? #方式四 for index,key in enumerate(dict2):value = dict2[key]print(index,key,value) ? #6.獲取鍵值對的個數 print(len(dict1)) ? #7.成員操作 d2 = {'name':'麻辣龍蝦','taste':'美味'} print('name' in d2) #判斷某個鍵是否在列表中

總結

以上是生活随笔為你收集整理的Day05-循环和列表字符串、元组和字典的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。