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) #判斷某個鍵是否在列表中

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

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

相關文章

@查看MySQL版本的方法

1.在終端下:mysql -V. [rootlocalhost bin]# mysql -V; mysql Ver 14.14 Distrib 5.6.21, for Linux (x86_64) using EditLine wrapper [rootlocalhost bin]# mysql -v; ERROR 1045 (28000): Access denied for user rootlocalhost (using password: NO) 注意&#xff0c;這…

echarts 柱狀圖 ,顏色和顯示設置

最近在使用echart開發圖標&#xff0c;api里面雖然有些設置&#xff0c;但是如果想讓柱狀圖每個柱的顏色都不相同&#xff0c;簡單的通過color設置是沒有作用的&#xff0c;這里&#xff0c;就要用到其他的方式了 下面只是列舉下我認為比較常用的&#xff0c;其他的比較簡單&am…

Pycharm 專業版 導入系統pip安裝的包

Pycharm 專業版 導入系統pip安裝的包 在setting 中找到project interpeter ,點擊設置圖標&#xff0c;點擊Add&#xff0c;得到如圖所示選擇 System Interpreter即可,這樣 用pip安裝的包都加再進來了

nodejs express

2019獨角獸企業重金招聘Python工程師標準>>> 創建express服務器 //app.js文件 var express require(express); var app express(); //指定更目錄顯示的內容 app.get(/, function(req, res){ res.send(Hello World); }); //指定監聽端口 var server app.listen(…

JS常見知識點

1、寫一個按照下面方式調用都能正常工作的 sum 方法 console.log(sum(2,3)); // Outputs 5 console.log(sum(2)(3)); // Outputs 5 解決方案 function sum() {var fir arguments[0];if (arguments.length 2) {return arguments[0] arguments[1]} else {return function (sec…

格雷碼 matlab,基于格雷碼的結構光重建代碼(MATLAB版本)

【實例簡介】該代碼為brown university相關技術人員編寫&#xff0c;旨在用于學習研究3D結構光的原理、算法實現和應用。由于原有的網站( http://mesh.brown.edu/byo3d/index.html )近期無法訪問&#xff0c;為了便于3D愛好者可以方便學習相關內容&#xff0c;特將該網站部分代…

Day06-函數

函數 一、集合&#xff08;set) 特點:不允許有重復元素&#xff0c;如果添加重復元素&#xff0c;則會自動過濾&#xff0c;可以進行交集、并集的運算。 本質&#xff1a;無序且無重復元素的數據結構 1 創建集合 s1 set() #空集合 不能是{}&#xff0c;這是字典 s2 {1…

在TextView中實時顯示數據

//下面實時更新顯示在textView中的數據handler new Handler();runnable new Runnable(){Overridepublic void run(){// TODO Auto-generated method pushupTextView.setText(Integer.toString(Number.pushup_number)); handler.postDelayed(this, 1000); }}; handle…

DuangDuangDuang!碼云項目的 Readme.md 特殊技能

為什么80%的碼農都做不了架構師&#xff1f;>>> 我們在 碼云 上創建新項目的時候&#xff0c;常常會看到默認使用 README 文件初始化該項目&#xff08;如圖1 所示&#xff09;&#xff0c;然后在新建項目的根目錄下就會生成一個 README.md 文件&#xff08;如圖2 …

java sunjce,無法初始化類javax.crypto.SunJCE_b

我已經開發了一個Javaservlet應用程序&#xff0c;并且在我的開發PC上&#xff0c;一切正常&#xff0c;包括按計劃使用SFTP通過端口8443等上的HTTPS并以適當的SSL證書通過PDF復制PDF。但是&#xff0c;當我嘗試在實時服務器上運行該應用程序時&#xff0c;會收到錯誤消息。jav…

GitHub添加SSH keys報錯Key is invalid. It must begin with 'ssh-ed25519', 'ssh-rsa', 'ssh-dss', 'ecdsa-sha

GitHub添加SSH keys報錯Key is invalid. It must begin with ‘ssh-ed25519’, ‘ssh-rsa’, ‘ssh-dss’, ecdsa-sha 在GitHub上Add SSH key的時候報錯&#xff1a;Key is invalid. It must begin with ‘ssh-ed25519’, ‘ssh-rsa’, ‘ssh-dss’, ecdsa-sha。。。&#xff…

System.Diagnostics.Process 執行.EXE

分類&#xff1a; C#WINFORM 2009-04-05 21:09 459人閱讀 評論(0) 收藏 舉報 我們經常會遇到在Winform或是WPF中點擊鏈接或按鈕打開某個指定的網址, 或者是需要打開電腦中某個指定的硬盤分區及文件夾, 甚至是"控制面板"相關的東西, 那么如何做呢? 答案是使用Sys…

php 擴展 返回字符串,基于PHP7的PHP擴展開發之四(字符串的處理)

目的&#xff1a;熟悉字符串在PHP擴展里面如何處理要實現的PHP代碼如下&#xff1a;1、當字符串不包含指定前綴字符串時&#xff0c;把前綴字符串和被檢測字符合并返回。2、當字符串包含指定前綴字符串時&#xff0c;原樣返回。 我們將使用PHP擴展的方式實現str_concat功能。fu…

對象之int介紹

#Auther Bob #--*--conding:utf-8 --*-- #創建兩個int的對象&#xff0c;age1和age2age1 10 age2 int(1)#查看對象的類print(type(age1))# <class int>print(type(age2))# <class int> #bit_length表示一個十進制數最少需要占用多個二進制位print(age1.bit_lengt…

Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.

谷歌瀏覽器報錯 版本 73.0.3683.103&#xff08;正式版本&#xff09; &#xff08;32 位&#xff09;報錯內容如下Unchecked runtime.lastError: Could not establish connection. Receiving end does not exist.jquery.js:2 Cross-Origin Read Blocking (CORB) blocked cros…

OpenStack 之vmware機器遷移到openstack集群

原理 openstack本身是支持使用vmware格式的鏡像的&#xff0c;但是是需要我們我們在/etc/nova/nova.conf的配置文件中指定該計算節點使用vmware的驅動 123456789101112# Driver to use for controlling virtualization. Options# include: libvirt.LibvirtDriver, xenapi.XenAP…

解決Django靜態文件配置pycharm高光問題

就困擾了我半天的Django靜態文件配置問題 更改了setting 文件后 文件參考問題總會高亮讓然覺得又錯誤怪怪的 所以索性直接眼不見心不煩 具體操作如下圖&#xff1a; 就這樣就可以啦 大功告成&#xff01; 也順便提一下靜態文件配置問題&#xff1a; Django靜態加載的設置…

Weblogic的管理服務器與受管服務器

weblogic管理服務器和受管服務器&#xff1a; 域包含一個稱為“管理服務器”的特殊 WebLogic Server 實例&#xff0c;它是您配置和管理域中所有資源的中心點&#xff0c;一個域有僅只有一個管理服務器實例。 在生產環境中&#xff0c;應將 Web 應用程序、EJB 和其他資源部…

python神經網絡可視化,python中的神經網絡感受野可視化

這是我想出的解決方案。謝謝mprat的幫助。在我發現spectralcolormap最適合這種任務&#xff0c;而且我還添加了您可以指定的邊框。在from matplotlib import pyplotimport numpy as npborder 2images_amount 300row_amount 10col_amount 30image_height 28image_width 28…

Qt 多媒體音頻模擬按鈕發音(音視頻啟動)

## 項目演示 平臺:windows或者ubuntu 要求:平臺需要支持音頻播放功能 文件格式:.wav 可以使用剪映生成,音頻部分,我這里是簡短的音樂 # Qt 多媒體簡介 Qt QSound是Qt框架中的一個類,用于播放音頻文件。它可以在Qt應用程序中實現簡單的音頻播放功能,包括播放、暫停和…