推薦學習:
字串表現形式
a = "100"b = "hello world"c = 'hello world'd = '100'e = ‘18.20520'
Python len( )方法返回物件(字元、列表、元組、字典等)長度或專案個數。
In [1]: a="abcdefg"In [2]: len(a)Out[2]: 7In [3]: b = [1,2,3,4,5,66,77,8888]In [4]: len(b)Out[4]: 8
字串會拼接,數位會相加
In [5]: a ="lao"In [6]: b="wang"In [7]: c=a+b In [8]: c Out[8]: 'laowang'In [9]: d= "===="+a+b+"===="In [10]: d Out[10]: '====laowang===='In [11]: f="===%s===="%(a+b)In [12]: f Out[12]: '===laowang===='
輸入資訊
name = input(「 請輸入你的姓名:」)position = input(「 請輸入你的職業:」)address = input(「 請輸入你的地址:」)
輸出資訊
print("="*50)print(" 姓名:%s\n 職業:%s\n 地址:%s" % (name,position,address))print("="*50)
格式化的方式展示資料,並可以通過多種方式展示資料。如 通過位置、通過關鍵字引數、通過對映list。
1.通過位置
print(「my name is {0},age is {1}」.format(‘劉備’,20))
print(「my name is {},age is {}」.format(‘劉備’,20))
print(「{1},{0},{1}」.format(‘劉備’,20))
2.通過關鍵字引數
print(「{age},{name}」.format(age=28,name=「曹操」))
print(「{name},{name},{age}」.format(age=28,name=「曹操」))
3.通過對映list
alist = [「孫權」,20,「中國」]
blist = [「貂蟬」,18,「中國」]
print(「my name is {1[0]}, from {0[2]}, age is {0[1]}」.format(alist,blist))
在python3中input 獲取的資料,都以字串的方式進行儲存,即使輸入的是數位,那麼也是以字串方式儲存
#判斷密碼是否正確
user_name = input(「 請輸入使用者名稱:」)password = input(「 請輸入密碼:」)if user_name == 「beijing」 and password == 「123」 :print(「 歡迎登入北京官網!")else :print(" 你的賬戶或者密碼錯誤!")
下標索引 index
所謂「下標」,就是編號,就好比超市中的儲存櫃的編號,通過這個編號就能找到相應的儲存空間。
通過下標取出部分字元
如果有字串:name = ‘abcdef’,在記憶體中的實際儲存如下:
In [1]: len(name)
Out[1]: 7
In [2]: name[len(name)-1]
Out[2]: ‘g’
In [3]: name[-1]
Out[3]: ‘g’ 正數從左往右,負數從右往左
切片是指對操作的物件擷取其中一部分的操作。字串、列表、元組都支援切片操作。
切片的語法:[ 起始: 結束: 步長]
注意:選取的區間屬於 左閉右開型,即從"起始"位開始,到"結束"位的前一位結束(不包含結束位本身),注意,如果不寫步長預設是1.
步長是控制方向的,正數從左往右取,負數是從右到左取
In [1]: name="abcdefABCDEF"In [2]: name[0:3]Out[2]: 'abc'In [3]: name[0:5:2]Out[3]: 'ace'In [4]: name[-1::-1] #逆序(倒敘)Out[4]: 'FEDCBAfedcba'
下標和切片小結
[:] 提取從開頭(預設位置0)到結尾的整個字串
[start:] 從start 提取到結尾
[:end] 從開頭提取到end - 1
[start:end] 從start 提取到end - 1
[startstep] 從start 提取到end - 1,每step 個字元提取一個
[::-1]逆序
find()、 rfind ()、 index ()、 rindex ()、 replace ()、split ()、parttion ()、rparttion ()、splitlines ()、startswith ()、endswith ()、lower ()、upper ()、…………
In [1]: mystr="hello world yanzilu and yanziluPython"In [2]: mystr Out[2]: 'hello world yanzilu and yanziluPython In [3]: mystr.find("and")Out[3]: 20In [4]: mystr.find("world") #存在則返回該單詞開始的下標Out[4]: 6In [5]: mystr.find("world1") #不存在則返回-1Out[5]: -1In [6]: mystr.find("yanzilu")Out[6]: 12In [7]: mystr.find("yanzilu",20,len(mystr)) #指定查詢區域Out[7]: 24In [8]: mystr.rfind("yanzilu") #rfind,從右往左搜尋Out[8]: 24
作用和find一樣,只有一點不同,index搜尋不到的內容會報錯
In [9]: mystr.index("and") Out[9]: 20In [10]: mystr.index("yanzilu")Out[10]: 12In [11]: mystr.index("yanzilu",20,len(mystr)) #指定查詢區域Out[11]: 24In [12]: mystr.rindex("yanzilu") #從右往左搜尋Out[12]: 24In [13]: mystr.rindex("zhangsan") #搜尋不存在的會報錯---------------------------------------------------------------------------ValueError Traceback (most recent call last)<ipython-input-67-6aff7ee60ad5> in <module>----> 1 mystr.rindex("zhangsan")ValueError: substring not found
In [14]: mystr Out[14]: 'hello world yanzilu and yanziluPython'In [15]: mystr.replace("world","WORLD")Out[15]: 'hello WORLD yanzilu and yanziluPython'In [16]: mystr Out[16]: 'hello world yanzilu and yanziluPython'In [17]: mystr.replace("yan","zhang")Out[17]: 'hello world zhangzilu and zhangziluPython'In [18]: mystr.replace("yan","zhang",1) #指定替換次數Out[18]: 'hello world zhangzilu and yanziluPython'In [19]: mystr.replace("yan","xxx",1)Out19]: 'hello world xxxzilu and yanziluPython'In [20]: mystr.replace("yan","xxx",2)Out[20]: 'hello world xxxzilu and xxxziluPython'In [21]: mystr.replace("yan","xxx",33) #替換次數可以超過最大值Out[21]: 'hello world xxxzilu and xxxziluPython'
In [22]: mystr Out[22]: 'hello world yanzilu and yanziluPython'In [23]: mystr.split(" ")Out[23]: ['hello', 'world', 'yanzilu', 'and', 'yanziluPython']In [24]: mystr.split("and")Out[24]: ['hello world yanzilu ', ' yanziluPython']In [25]: mystr.split(" ",3)Out[25]: ['hello', 'world', 'yanzilu', 'and yanziluPython']In [26]: mystr.split()Out[26]: ['hello', 'world', 'yanzilu', 'and', 'yanziluPython']
In [27]: mystr Out[27]: 'hello world yanzilu and yanziluPython'In [28]: mystr.partition("and")Out[28]: ('hello world yanzilu ', 'and', ' yanziluPython')In [29]: mystr.partition("yanzilu")Out[29]: ('hello world ', 'yanzilu', ' and yanziluPython')In [30]: mystr.rpartition("yanzilu")Out[30]: ('hello world yanzilu and ', 'yanzilu', 'Python')
In [31]: mystr1 Out[31]: 'hello\nworld\nyanzilu\nand\nyanziluPython'In [32]: mystr1.splitlines()Out[32]: ['hello', 'world', 'yanzilu', 'and', 'yanziluPython']
In [33]: mystr Out[33]: 'hello world yanzilu and yanziluPython'In [34]: mystr.startswith("hello")Out[34]: TrueIn [35]: mystr.startswith("Hello")Out[35]: FalseIn [36]: mystr.startswith("h")Out[36]: TrueIn [37]: mystr.endswith("Pthon")Out[37]: FalseIn [38]: mystr.endswith("Python")Out[38]: True
In [39]: mystr.upper()。 Out[39]: 'HELLO WORLD YANZILU AND YANZILUPYTHON'In [40]: mystr.lower() Out[40]: 'hello world yanzilu and yanzilupython'
In [41]: mystr = "那一夜我傷害了你"In [42]: mystr = mystr.center(30) In [43]: mystr Out[43]: ' 那一夜我傷害了你
###3.10 lstrip刪除字串左邊的空格
In [44]: mystr.lstrip()Out[44]: '那一夜我傷害了你
In [45]: mystr.rstrip()Out[45]: ' 那一夜我傷害了你'
In [46]: mystr.strip()Out[46]: '那一夜我傷害了你'
In [47]: mystr.isspace()Out[47]: FalseIn [48]: mystr = " "In [49]: mystr.isspace()Out[49]: True
In [50]: mystr = "abc" In [51]: mystr.isalpha()Out[51]: TrueIn [52]: mystr = "abc1"In [53]: mystr.isalpha()Out[53]: False
In [54]: mystr = "123123"In [55]: mystr.isdigit()Out[55]: TrueIn [56]: mystr = "123123aa"In [57]: mystr.isdigit()Out[57]: False
In [58]: mystr.isalnum()Out[58]: TrueIn [59]: mystr = "123123 aa"In [60]: mystr.isalnum()Out[60]: False
In [61]: mystr = 'hello world yanzilu and yanziluPython'In [62]: mystr.title()Out[63]: 'Hello World Yanzilu And Yanzilupython'
In [64]: mystr.capitalize()Out[64]: 'Hello world yanzilu and yanzilupython'
In [65]: mystr.count("hello")Out[65]: 1In [66]: mystr.count("yan")Out[66]: 2
In [67]: mystr = " "In [68]: name Out[68]: ['hello', 'world', 'yanzilu', 'and', 'yanziluPython']In [69]: mystr.join(name)Out[69]: 'hello world yanzilu and yanziluPython'In [70]: mystr = "_"In [71]: mystr.join(name)Out[71]: 'hello_world_yanzilu_and_yanziluPython'
#變數names_list的型別為列表names_list = [' 劉備',' 曹操',' 孫權'] #列印多個姓名names_list = [' 劉備',' 曹操',' 孫權']print(names_list[0])print(names_list[1])print(names_list[2]) names = [' 劉備',' 曹操',' 孫權'] for x in names print(x)i=1while i<len(names)print(name[i])i+=1
列表中存放的資料是可以進行修改的,比如"增"、「刪」、「改」
append可以向列表新增元素
extend將另一個集合中的元素逐一新增到列表中
insert在指定位置index前插入元素
name=[「劉備」 , 」曹操」 , 」孫權」]print(「增加之前:」,name)info=[「黃忠」 , 」魏延」]
append追加
names.append("呂布")names.append("貂蟬")names.append(info) #append把中括號也增加上了print("增加之後:",names)
這裡是參照
使用extend合併列表
info = ["黃忠","魏延"]names.extend(info)print("增加之後:",names)
這裡是參照
insert在指定位置前插入元素
names.insert(0,"劉禪")print("增加之後:",names)
del根據下標進行刪除
pop刪除最後一個元素
remove根據元素的值進行刪除
names = ['劉備', '曹操', '孫權', '呂布', '貂蟬', '黃忠', '魏延']print("刪除前:",names)
del names[1]print("del刪除後:",names)
names.pop()names.pop()print("pop刪除後:",names)
name = input("請輸入您要刪除的歷史人物:")names.remove(name)print("remove刪除後:",names)
通過下標修改元素 (" 改 ")
names = ["劉備","曹操","孫權"]names[0] = "劉禪"print(names)
python中查詢的常用方法為:
in (存在), 如果存在那麼結果為True ,否則為False
not in (不存在),如果不存在那麼結果為True ,否則False
index和count與字串中的用法相同
names = ['劉備', '曹操', '孫權', '呂布', '貂蟬', '黃忠', '魏延',"曹操"]findName = input("請輸入您要查詢的姓名:")if findName in names: print("已經找到:%s"%findName)else: print("沒有找到:%s"%findName)
In [1]: names = ['劉備', '曹操', '孫權', '呂布', '貂蟬', '黃忠', '魏延',’曹操’]In [2]: name.index(「曹操」)Out[2]:1In [3]: name.index(「曹操」,2,leb(names))Out[3]:7In [4]: name.count(「曹操」)Out[4]:2
sort方法是將list按特定順序重新排列,預設為由小到大(True:從小到大;False從大到小)
reverse=True可改為倒序,由大到小。
reverse方法是將list逆置。需要先排序再降序
類似while迴圈的巢狀,列表也是支援巢狀的一個列表中的元素又是一個列表,那麼這就是列表的巢狀
範例:
school_names = [[' 北京大學',' 清華大學'],[' 南開大學',' 天津大學'],[' 貴州大學',' 青海大學']]print(school_names)
#print(school_names)#print(len(school_names))#print(school_names[2][1])for school in school_names: print("="*30) print(school) for name in school: print(name)
一個學校,有3個辦公室,現在有8位元老師等待工位的分配,請編寫程式,完成隨機的分配
import random offices = [[ ],[ ],[ ]]names = ['劉備', '曹操', '孫權', '呂布', '貂蟬', '黃忠', '魏延','大喬']for office in offices: #得到一個教師的下標 index = random.randint(0,len(names)-1) #分配老師 name = names[index] office.append(name) #要移除已經完成分配的老師 names.remove(name)for name in names: #得到辦公室編號 index = random.randint(0,2) offices[index].append(name)#print(offices)#列印出來哪些辦公室有哪些老師i= 1for office in offices: #office = ["劉備","曹操"] print("辦公室%s : 共%s人"%(i,len(office))) i+=1 for name in office: print("%s"%name,end="\t\t") print() print("="*30)
推薦學習:
以上就是簡單學習Python字元和列表(範例詳解)的詳細內容,更多請關注TW511.COM其它相關文章!