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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python元组 字符串 字典 习题+总结

發(fā)布時間:2024/9/30 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python元组 字符串 字典 习题+总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

概念

a_tuple = {’ crazyit ’, 20 , 5 . 6,’f kit ’,-17)
#訪問倒數(shù)第1 個元素
print (a_tuple [-1]) # - 17
#訪問倒數(shù)第2 個元素
print(a_tuple[-2]) # - fkit

特殊運算符

python中有特殊運算符
in 運算符
in 運算符用于判斷列表或元組是否包含某個元素

Python 提供了內(nèi)置的ten()、max()、min()全局函數(shù)來獲取元組或列表的長度、最大值和最小值。
由于max()、min()要對元組、列表中的元素比較大小,因此程序要求傳給max ()、min ()函數(shù)的元組、列表的元素必須是相同類型且可以比較大小。

封包和拆包

Python 還提供了序列封包( Sequence Packing )和序列解包( Sequence Unpacking )的功能。程序把多個值賦給一個變量時, Python 會自動將多個值封裝成元組。這種功能被稱為序列封包。
程序允許將序列(元組或列表等)直接賦值給多個變量,此時序列的各元素會被依次賦值給每個變量(要求序列的元素個數(shù)和變量個數(shù)相等)。這種功能被稱為序列解包。

元組練習(xí)題

1、元組概念

寫出下面代碼的執(zhí)行結(jié)果和最終結(jié)果的類型

(1, 2)*2
(1, )*2
(1)2
分析為什么會出現(xiàn)這樣的結(jié)果.
----因為元組的乘法與單個數(shù)字乘法不同,并不會將數(shù)值進行乘積,而且將整體變化,如一個元組2以后變成一個含有雙倍數(shù)量元素的元組

通過索引輸出:

ttu=(‘cra’,‘he’,‘zi’,423,11,23)
print(ttu[1:3])
(‘he’, ‘zi’)

2、拆包過程是什么?
----示例:

vals = 10 , 20 , 30
print(vals)
(10, 20, 30)

a, b = 1, 2
上述過程屬于拆包嗎?
—不屬于

可迭代對象拆包時,怎么賦值給占位符?
賦給單個對象算不算拆包?
還不清楚如果元組中有數(shù)字又有字符串時占位符怎么用,試了一下字符串:

ni = ('he','ziii','yi','mutai','danshen','wurenchaoguo')for i in ni:print('%s'%(i),end=" ")

輸出:
he ziii yi mutai danshen wurenchaoguo
Process finished with exit code 0

if __name__ == '__main__':nice=('hehe','liang','boy','ooo')nice = nice+divmod(55,2)print(nice)for i in nice:print(i)

輸出:
(‘hehe’, ‘liang’, ‘boy’, ‘ooo’, 27, 1)
hehe
liang
boy
ooo
27
1

拆包:

#序列解包: 將a_tuple 元組的各元素依次賦值給a 、b 、c 、d、e 變量 a , b , c , d , e = a tuple print (a, b , c , d , e)

先封包再解包:

python一種輸出類似C語言中printf("%s"):

nice=input(“請輸入:”)
請輸入:靜靜

print(‘nice is %s:’%(nice))
nice is 靜靜:

一個很特別的點:在序列解包時也可以只解出部分變量,剩下的依然使用列表變量保存。為了使用這種解包方式,
Python 允許在左邊被賦值的變量之前添加“*”,那么該變量就代表一個列表,可以保存多個集合
元素。

first, second, *rest = range (10)print(first) # 0print(second) # 1print(rest) # [2 , 3 , 4 , 5 , 6 , 7 , 8 , 9)

Process finished with exit code 0

字符串

字符串的切片與拼接
類似于元組具有不可修改性
切片通常寫成 start:end 這種形式,包括「start 索引」對應(yīng)的元素,不包括「end索引」對應(yīng)的元素。
python中有一個特殊點:負(fù)索引(c++中無)
索引值可正可負(fù),正索引從 0 開始,從左往右;負(fù)索引從 -1 開始,從右往左。使用負(fù)數(shù)索引時,會從最后一個元素開始計數(shù)。最后一個元素的位置編號是 -1。

例子:

s = 'Python' print(s) # Python print(s[2:4]) # th print(s[-5:-2]) # yth print(s[2]) # t print(s[-1]) # n

. 字符串的常用內(nèi)置方法

capitalize() 將字符串的第一個字符轉(zhuǎn)換為大寫。
print(str2.capitalize()) # Xiaoxie
lower() 轉(zhuǎn)換字符串中所有大寫字符為小寫。
upper() 轉(zhuǎn)換字符串中的小寫字母為大寫。
swapcase() 將字符串中大寫轉(zhuǎn)換為小寫,小寫轉(zhuǎn)換為大寫。
count(str, beg= 0,end=len(string)) 返回str在 string 里面出現(xiàn)的次數(shù),如果beg或者end指定則返回指定范圍內(nèi)str出現(xiàn)的次數(shù)。
endswith(suffix, beg=0, end=len(string)) 檢查字符串是否以指定子字符串 suffix 結(jié)束,如果是,返回 True,否則返回 False。如果 beg 和 end 指定值,則在指定范圍內(nèi)檢查。
startswith(substr, beg=0,end=len(string)) 檢查字符串是否以指定子字符串 substr 開頭,如果是,返回 True,否則返回 False。如果 beg 和 end 指定值,則在指定范圍內(nèi)檢查。
find(str, beg=0, end=len(string)) 檢測 str 是否包含在字符串中,如果指定范圍 beg 和 end,則檢查是否包含在指定范圍內(nèi),如果包含,返回開始的索引值,否則返回 -1。
rfind(str, beg=0,end=len(string)) 類似于 find() 函數(shù),不過是從右邊開始查找。

字符串習(xí)題

練習(xí)題:

1、字符串函數(shù)回顧

怎么批量替換字符串中的元素?
怎么把字符串按照空格進?拆分?
怎么去除字符串?位的空格?
以上功能實現(xiàn)代碼:

if __name__ == '__main__':name = "heziyi"name = name.replace('yi','wow')print(name)nam2 = 'lllziyi jin tian zhen'print(nam2.split())name3 = ' 今天是好日子'name3 = name3.lstrip()print(name3)

結(jié)果:

2、實現(xiàn)isdigit函數(shù)

題目要求

實現(xiàn)函數(shù)isdigit, 判斷字符串里是否只包含數(shù)字0~9

def isdigit(string):
“”"
判斷字符串只包含數(shù)字
:param string:
:return:
“”"
# your code here
pass

代碼:

def isdigit(string):# your code herelen1 = len(string)for i in range(len1):try:int(string[i])except ValueError:return Falsereturn Trueif __name__ == '__main__':name = "heziyi"print(isdigit(name))num = '1234423'print(isdigit(num))

結(jié)果:

3、leetcode 5題 最長回文子串

給定一個字符串 s,找到 s 中最長的回文子串。你可以假設(shè) s 的最大長度為 1000。

示例:

輸入: “babad”

輸出: “bab”

輸入: “cbbd”

輸出: “bb”

力扣中等難度的題。。。。我承認(rèn)我現(xiàn)在事情有點多的情況下沒法安分地去思考這個題。。。。一開始想到先定義函數(shù)求出一個是回文子串的串長度,然后在main中可以循環(huán)來判斷所有子串長度的最大值,輸出長度最大的串然后寫出來的一直好像有問題,官方題解看了一下,之前都不知道原來可以return兩個值,python中的語法還真是很隨意。
在pycharm里面跑了一下這個:

def expandAroundCenter( s, left, right):while left >= 0 and right < len(s) and s[left] == s[right]:left -= 1right += 1return left+1, right-1def biggest(string):len1 = len(string)start = 0end = 0i = 0for i in range(len1):if i+1>len1:breakmax1,max2 = expandAroundCenter(string,i,i)max3,max4 = expandAroundCenter(string,i,i+1)if max2 - max1 > max4 - max3:start,end = max1,max2else:start,end = max3,max4return string[int(start),int(end+1)] class Solution:def longestPalindrome(self, s: str) -> str:# your code here

結(jié)果還是typeerror:

File “C:\Users\14172\PycharmProjects\pythonProject3\main.py”, line 40, in
print(biggest(st))
File “C:\Users\14172\PycharmProjects\pythonProject3\main.py”, line 36, in biggest
return string[int(start),int(end+1)]
TypeError: string indices must be integers

Process finished with exit code 1

手頭還有好多別的事,這個問題回頭再來看吧。。。感覺應(yīng)該是語法錯誤吧。。。

字典

程序既可使用花括號語法來創(chuàng)建字典,也可使用dict() 函數(shù)來創(chuàng)建字典。

在使用花括號語法創(chuàng)建字典時,花括號中應(yīng)包含多個key-value 對, key 與value 之間用英文冒號隔開;多個key-value 對之間用英文逗號隔開。

直接print()括號中為元組的名字時原樣輸出:

scores = {'chinese': 89,'math': 92 ,'english': 93}print(scores)# 空的花括號代表空的dietempty_dict = {}print(empty_dict)#使用元組作為diet的keydict2 = {(20, 30): 'good ’ , 30 :’ bad'}print(dict2)

結(jié)果:
{‘chinese’: 89, ‘math’: 92, ‘english’: 93}
{}
{(20, 30): ‘good ’ , 30 :’ bad’}

Process finished with exit code 0

  • 注意:
    元組可以作為diet 的key,但列表不能作為元組的key這是由于diet 要求key必須是不可變類型,但列表是可變類型,因此列表不能作為元組的key 。

在使用diet()函數(shù)創(chuàng)建字典時, 可以傳入多個列表或元組參數(shù)作為key-value 對, 每個列表或元組將被當(dāng)成一個key-value 對,因此這些列表或元組都只能包含兩個元素。

示例:

vegetables =[('name','何梓貽') ,('gender','girl') ,('age',19)]vet3 = dict(vegetables)print(vet3)fruit=[['name','何梓貽'],['gender','girl']]vet2 = dict(fruit)print(vet2)

輸出:
{‘name’: ‘何梓貽’, ‘gender’: ‘girl’, ‘a(chǎn)ge’: 19}
{‘name’: ‘何梓貽’, ‘gender’: ‘girl’}
還可通過為diet 指定關(guān)鍵字參數(shù)創(chuàng)建字典,此時字典的key 不允許使用表達(dá)式:

dict4 = dict (name=‘何梓貽’,age=19)
print(dict4)
{‘name’: ‘何梓貽’, ‘a(chǎn)ge’: 19}

操作字典

1.如果要為diet 添加key-value 對,只需為不存在的key 賦值即可
#對不存在的key 賦值,就是增加key - value 對
scores [‘?dāng)?shù)學(xué)’]= 93
2.如果要刪除宇典中的key- value 對,則可使用del 語句。例如如下代碼
#使用del i吾句刪除key - value 對
del scores [‘?dāng)?shù)學(xué)’]
3.如果對diet 中存在的key-value 對賦值,新賦的value巳就會覆蓋原有的value , 這樣即可改變diet中的key-value 對
4.如果要判斷字典是否包含指定的key ,則可以使用in 或not in 運算符,對于dict 而言,in或not in 運算符都是基于key 來判斷的
5.#清空cars 的所有key-value 對
cars . clear ()
6.get()方法其實就是根據(jù)key 來獲取value , 它相當(dāng)于方括號語法的增強版當(dāng)使用方括號語法訪問并不存在的key 時,字典會引發(fā)KeyError 錯誤

fruit=[['name','張三'],['gender','girl']]vet2 = dict(fruit)print(vet2.get('name'))

輸出張三

7.items()、keys()、values()分別用于獲取字典中的所有key-value 對、所有key、所有value 。這三個方法依次返回diet-items 、diet keys 和diet_values 對象, Python 不希望用戶直接操作這幾個方法,但可通過list()函數(shù)把它們轉(zhuǎn)換成列表。
總結(jié):字典的key 是它的關(guān)鍵。換個角度來看,字典的k巳y 就相當(dāng)于它的索引,只不過這些索引不一定是整數(shù)類型,字典的key 可以是任意不可變類型。

fruit=[['name','李四'],['gender','girl']]vet2 = dict(fruit)itm = vet2.items()print(itm)print(list(itm))

輸出:
dict_items([(‘name’, ‘李四’), (‘gender’, ‘girl’)])
[(‘name’, ‘李四’), (‘gender’, ‘girl’)]

itm = vet2.values()print(itm)print(list(itm))

輸出:
dict_values([‘李四’, ‘girl’])
[‘李四’, ‘girl’]

8.updateO方法可使用一個字典所包含的key- value 對來更新己有的字典。在執(zhí)行update()方法時,如果被更新的字典中己包含對應(yīng)的key-value 對, 那么原value 會被覆蓋:如果被更新的字典中不包含對應(yīng)的key-value 對, 則該key-value 對被添加進去

cars = {'name':'張三','age':19}cars.update({'name':'lisi'})print(cars)

輸出:
{‘name’: ‘lisi’, ‘a(chǎn)ge’: 19}

9.pop()方法用于獲取指定key 對應(yīng)的value ,并刪除這個key- value 對。如下方法示范了pop ()方法的用法。
10.popitem()方法用于隨機彈出字典中的一個key-value對。

  • 注:
    實際上字典的popitem()是彈出字典中最后一個鍵值對由于字典存儲key-value 對的順序是不可知的,因此開發(fā)者感覺字典的popitem()方法是“隨機”彈出的,但實際上字典的popitem()方法總是彈出底層存儲的最后一個key-value 對
  • 注意:
    列表不允許對不存在的索引賦值;但字典則允許直接對不存在的key 賦值。

字典的常用方法:
在交互式解釋器中輸入dir:

dir(dict)
[‘class’, ‘class_getitem’, ‘contains’, ‘delattr’, ‘delitem’, ‘dir’, ‘doc’, ‘eq’, ‘format’, ‘ge’, ‘getattribute
, ‘getitem’, ‘gt’, ‘hash’, ‘init’, ‘init_subclass’, ‘ior’, ‘iter’, ‘le’, ‘len’, ‘lt’, ‘ne’, ‘new’, ‘or
, ‘reduce’, ‘reduce_ex’, ‘repr’, ‘reversed’, ‘ror’, ‘setattr’, ‘setitem’, ‘sizeof’, ‘str’, ‘subclasshook’, ‘clear’,
‘copy’, ‘fromkeys’, ‘get’, ‘items’, ‘keys’, ‘pop’, ‘popitem’, ‘setdefault’, ‘update’, ‘values’]

字典嵌套

在字典中存儲列表
習(xí)題中第二題c++即嵌套了列表

data = {
‘python’: {‘上學(xué)期’: ‘90’, ‘下學(xué)期’: ‘95’},
‘c++’: [‘95’, ‘96’, ‘97’],
‘java’: [{‘月考’: ‘90’, ‘期中考試’: ‘94’, ‘期末考試’: ‘98’}]
}

在字典中存儲字典
例子:

grade={'score': {'語文':99,'math':88,'pe':100},'information':{'name':'何梓貽','age':19}}for gras1,gras2 in grade.items():print(gras1)print(gras2)

輸出:
score
{‘語文’: 99, ‘math’: 88, ‘pe’: 100}
information
{‘name’: ‘何梓貽’, ‘a(chǎn)ge’: 19}

若 print(list(gras2.values())[1])
輸出19

其中g(shù)rade中包含兩個鍵,每個與鍵相關(guān)聯(lián)的值都是一個字典

字典練習(xí)題

1、字典基本操作

字典內(nèi)容如下:

dic = {
‘python’: 95,
‘java’: 99,
‘c’: 100
}
用程序解答下面的題目

字典的長度是多少
請修改’java’ 這個key對應(yīng)的value值為98
刪除 c 這個key
增加一個key-value對,key值為 php, value是90
獲取所有的key值,存儲在列表里
獲取所有的value值,存儲在列表里
判斷 javascript 是否在字典中
獲得字典里所有value 的和
獲取字典里最大的value
獲取字典里最小的value
字典 dic1 = {‘php’: 97}, 將dic1的數(shù)據(jù)更新到dic中

dic = {'python': 95,'java': 99,'c': 100}print(len(dic))del(dic['java'])print(dic)dic['php']=90print(list(dic.keys()))print(list(dic.values()))print('javascript' in dic)print('min:'+min(dic)+'max:'+max(dic))dic['php']=97print(dic)

結(jié)果:

2、字典中的value

有一個字典,保存的是學(xué)生各個編程語言的成績,內(nèi)容如下

data = {
‘python’: {‘上學(xué)期’: ‘90’, ‘下學(xué)期’: ‘95’},
‘c++’: [‘95’, ‘96’, ‘97’],
‘java’: [{‘月考’:‘90’, ‘期中考試’: ‘94’, ‘期末考試’: ‘98’}]
}
各門課程的考試成績存儲方式并不相同,有的用字典,有的用列表,但是分?jǐn)?shù)都是字符串類型,請實現(xiàn)函數(shù)transfer_score(score_dict),將分?jǐn)?shù)修改成int類型

def transfer_score(data):
# your code here

代碼:

def transfer_score(dataa):dataa = int(dataa)return dataaif __name__ == '__main__':data = {'python': {'上學(xué)期': '90', '下學(xué)期': '95'},'c++': ['95', '96', '97'],'java': [{'月考': '90', '期中考試': '94', '期末考試': '98'}]}data1 = list(data.values());print(data1)print(data1[0])print(data1[1])print(data1[2][0])for i in range(len(data1[0])):list(data1[0].values())[i] = transfer_score(list(data1[0].values())[i])print(list(data1[0].values())[i],end=" ")print('\n')for i in range(len(data1[1])):data1[1][i] = transfer_score(data1[1][i])print(data1[1][i], end=" ")print('\n')for i in range(len(data1[2][0])):list(data1[2][0].values())[i] = transfer_score(list(data1[2][0].values())[i])print(list(data1[2][0].values())[i], end=" ")

結(jié)果:

一些思考:感覺寫的有點冗長,主要是拆包部分,但由于data中三個數(shù)據(jù)類型不一樣,不好用一個統(tǒng)一的循環(huán)進行拆,于是只能一個一個拆

一些其他的總結(jié)

創(chuàng)建類:

class Person:def __init__(self, name):self.name = namedef getName(self):return self.namedef color(self, color):print "%s is %s" % (self.name, color)

def__init__叫作初始化函數(shù)(因為還有一個__new__的函數(shù)是
真正的構(gòu)造。所以,將__init__稱之為初始化函數(shù))。

divmod() 函數(shù)把除數(shù)和余數(shù)運算結(jié)果結(jié)合起來,返回一個包含商和余數(shù)的元組(a // b, a % b)。

一些轉(zhuǎn)化類型的函數(shù)

python中的字符數(shù)字之間的轉(zhuǎn)換函數(shù)

int(x [,base ]) 將x轉(zhuǎn)換為一個整數(shù)
★★★int()函數(shù)可以把數(shù)字字符串轉(zhuǎn)化成int類型的數(shù)字,但是不能傳入非數(shù)字的字符串
long(x [,base ]) 將x轉(zhuǎn)換為一個長整數(shù)

float(x ) 將x轉(zhuǎn)換到一個浮點數(shù)

complex(real [,imag ]) 創(chuàng)建一個復(fù)數(shù)

str(x ) 將對象 x 轉(zhuǎn)換為字符串

repr(x ) 將對象 x 轉(zhuǎn)換為表達(dá)式字符串

eval(str ) 用來計算在字符串中的有效Python表達(dá)式,并返回一個對象

tuple(s ) 將序列 s 轉(zhuǎn)換為一個元組

list(s ) 將序列 s 轉(zhuǎn)換為一個列表

chr(x ) 將一個整數(shù)轉(zhuǎn)換為一個字符

unichr(x ) 將一個整數(shù)轉(zhuǎn)換為Unicode字符

ord(x ) 將一個字符轉(zhuǎn)換為它的整數(shù)值

hex(x ) 將一個整數(shù)轉(zhuǎn)換為一個十六進制字符串

oct(x ) 將一個整數(shù)轉(zhuǎn)換為一個八進制字符串

chr(65)=‘A’

ord(‘A’)=65

總結(jié)

以上是生活随笔為你收集整理的python元组 字符串 字典 习题+总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。