內置函數(shù)2

內置函數(shù)2


和數(shù)據(jù)結構相關

列表與元祖

  • list:將一個可迭代對象轉化成列表(如果是字典,默認將key作為列表的元素)。
  • tuple:將一個可迭代對象轉化成元祖(如果是字典,默認將key作為元祖的元素)。

二者多用于數(shù)據(jù)類型的轉換,需要注意的是以下三點:

  • 二者只可用于可迭代對象類型的轉換。
  • 當被轉換數(shù)據(jù)類型為字典時,默認只保留字典的鍵作為元素。
  • 當被轉換數(shù)據(jù)類型為字符串時,會將該元素迭代的增加到列表或元祖中。
# list
tu = (1,2,3,4)
se = {1,2,3,4}
di = {1:2,2:3,3:4,4:5}
s = '1234'
a = 1234
print(list(tu))
print(list(se))
print(list(di))
print(list(s))
print(list(a))
[1, 2, 3, 4]
[1, 2, 3, 4]
[1, 2, 3, 4]
['1', '2', '3', '4']



---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-2-87f8ca005b20> in <module>()
      9 print(list(di))
     10 print(list(s))
---> 11 print(list(a))


TypeError: 'int' object is not iterable
# tuple
li = [1,2,3,4]
se = {1,2,3,4}
di = {1:2,2:3,3:4,4:5}
s = '1234'
a = 1234
print(tuple(tu))
print(tuple(se))
print(tuple(di))
print(tuple(s))
print(tuple(a))
(1, 2, 3, 4)
(1, 2, 3, 4)
(1, 2, 3, 4)
('1', '2', '3', '4')



---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-3-e47bbf8c4ddd> in <module>()
      9 print(tuple(di))
     10 print(tuple(s))
---> 11 print(tuple(a))


TypeError: 'int' object is not iterable

相關內置函數(shù)

  • reversed:將一個序列翻轉,并返回此翻轉序列的迭代器。
  • slice:構造一個切片對象,用于列表的切片。

reversed函數(shù)主要用于字符串、列表,在字典、元祖、集合中不可用,其會生成一個迭代器,若需對其取值,可通過for循環(huán)或者將其轉換為list.

# reversed
li = [1,2,3,4]
s = '1234'

print(list(reversed(li)))
print(list(reversed(s)))
m = reversed(s)
for i in m:
    print(i)

[4, 3, 2, 1]
['4', '3', '2', '1']
4
3
2
1
a = 1234
b = reversed(a)    #int型不可使用reversed函數(shù)
b
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-6-4a3b1d2974fa> in <module>()
      1 a = 1234
----> 2 b = reversed(a)
      3 b


TypeError: 'int' object is not reversible
se = {1,2,3,4}
sf = reversed(se)  # 集合型不可使用reversed函數(shù)
sf
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-7-5077bc629553> in <module>()
      1 se = {1,2,3,4}
----> 2 sf = reversed(se)


TypeError: 'set' object is not reversible
di = {1:2,2:3,3:4,4:5}
dj = reversed(di)    #字典不可使用reversed函數(shù)
dj
---------------------------------------------------------------------------

TypeError                                 Traceback (most recent call last)

<ipython-input-8-002d3aa73535> in <module>()
      1 di = {1:2,2:3,3:4,4:5}
----> 2 dj = reversed(di)
      3 dj


TypeError: 'dict' object is not reversible

slice函數(shù)主要用于生成一種切片規(guī)則,以對不同可切片對象按照相同規(guī)則進行切片。

# slice
l1 = [ i for i in range(10)]
l2 = [ i for i in range(20)]
l3 = ['h','i','D','a','L','a','o']
t1 = (1,2,3,4,5,6)
s1 = '123456'

sli_obj = slice(0,5,2)

print(l1[sli_obj])
print(l2[sli_obj])
print(l3[sli_obj])
print(t1[sli_obj])
print(s1[sli_obj])
[0, 2, 4]
[0, 2, 4]
['h', 'D', 'L']
(1, 3, 5)
135

字符串相關

  • str:將數(shù)據(jù)轉化成字符串
  • format:與具體數(shù)據(jù)相關,用于計算各種小數(shù),精算等。
  • bytes:用于不同編碼之間的轉化。
  • bytearry:返回一個新字節(jié)數(shù)組。這個數(shù)組里的元素是可變的,并且每個元素的值范圍: 0 <= x < 256。
  • memoryview
  • ord:輸入字符找該字符編碼的位置
  • chr:輸入位置數(shù)字找出其對應的字符
  • ascii:是ascii碼中的返回該值,不是則返回他在unicode的位置(16進制。)
  • repr:返回一個對象的string形式(原形畢露)

str函數(shù)主要用于將對象轉換為字符串類型

# str 
li = [1,2,3,4]
se = {1,2,3,4}
di = {1:2,2:3,3:4,4:5}
a = 1234
tu = (1,2,3,4)
b = True

print(str(li))
print(str(se))
print(str(di))
print(str(a))
print(str(b))
[1, 2, 3, 4]
{1, 2, 3, 4}
{1: 2, 2: 3, 3: 4, 4: 5}
1234
True

format函數(shù)之前主要用于格式化字符串,但其同時還可用于設置對齊方式、計算各種小數(shù),精算等。

#format
#字符串可以提供的參數(shù),指定對齊方式,<是左對齊, >是右對齊,^是居中對齊
print(format('test', '<20'))
print(format('test', '>20'))
print(format('test', '^20'))

#整形數(shù)值可以提供的參數(shù)有 'b' 'c' 'd' 'o' 'x' 'X' 'n' None
print(format(3,'b')) #轉換成二進制

print(format(97,'c')) #轉換unicode成字符

print(format(11,'d')) #轉換成10進制

print(format(11,'o')) #轉換成8進制

print(format(11,'x')) #轉換成16進制 小寫字母表示

print(format(11,'X')) #轉換成16進制 大寫字母表示

print(format(11,'n')) #和d一樣

print(format(11)) #默認和d一樣



test                
                test
        test        
11
a
11
13
b
B
11
11

bytes函數(shù)主要用于不同編碼之間的轉換,生成的是一個bytes類型的變量。

# bytes:unicode ---> bytes 類型 

a1 = 'hi大佬'
print(a1.encode('utf-8'))
print(a1.encode('utf-8').decode())

# bytes:unicode ---> bytes 類型

a1 = 'hi大佬'
b1 = bytes(a1,encoding='utf-8')
print(b1)
b'hi\xe5\xa4\xa7\xe4\xbd\xac'
hi大佬
b'hi\xe5\xa4\xa7\xe4\xbd\xac'

bytearry函數(shù),memoryview函數(shù),略

ord,chr,ascii三者用法較為相似且息息相關,詳見代碼:

# ord:輸入字符找該字符編碼 unicode  的位置 

print(ord('a'))
print(ord('中'))

# chr:輸入位置數(shù)字找出其對應的字符unicode

print(chr(97))
print(chr(20013))

# ascii:是ascii碼中的返回該值,不是則返回他在unicode的位置(16進制。)

print(ascii('a'))
print(ascii('中'))
97
20013
a
中
'a'
'\u4e2d'

repr函數(shù)可以理解為輸出時將對象的string形式原型畢露,即加上引號。

#repr
print('alex')
print(repr('alex'))


alex
'alex'

數(shù)據(jù)集合

  • dict:創(chuàng)建一個字典。
  • set創(chuàng)建一個集合。
  • frozenset:返回一個凍結的集合,凍結后集合不能再添加或刪除任何元素。
    此部分與之前類似,均無特殊用法,不多加贅述,

相關內置函數(shù)

  • len:返回一個對象中元素的個數(shù)。
  • sorted:對所有可迭代的對象進行排序操作。
  • enumerate:枚舉,返回一個枚舉對象。
  • all:可迭代對象中,全都是True才是True
  • any:可迭代對象中,有一個True 就是True
  • zip:函數(shù)用于將可迭代的對象作為參數(shù),將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的列表。如果各個迭代器的元素個數(shù)不一致,則返回列表長度與最短的對象相同。
  • filter:過濾。
  • map:會根據(jù)提供的函數(shù)對指定序列做映射
#len
len('123')
3

sorted函數(shù)的用法與之前的min函數(shù)max函數(shù)較為相似,可通過key定制函數(shù)以拓展用法。同時,之前在列表部分曾學到過一個方法sort,與該函數(shù)的最大區(qū)別在于sorted函數(shù)是生成一個新的列表,并不改變原列表。而sort是改變原列表的排序方式。

l1 = [2,3,5,3,1,9,8,6]
l2 = [2,3,5,3,1,9,8,6]

l1.sort()
print(l1)

print(sorted(l2)) # 形成了一個新列表
print(l2) # 原列表不變
[1, 2, 3, 3, 5, 6, 8, 9]
[1, 2, 3, 3, 5, 6, 8, 9]
[2, 3, 5, 3, 1, 9, 8, 6]
# 需求:
# 將列表中的元祖按照元祖的第二個元素進行排序。
l3 = [(1,1000),(2,18),(4,250),(3,500)]
def func(x):
    return x[1]
print(sorted(l3,key = func))

#小拓展,結合sort方法,猜測一下sorted函數(shù)如何倒序輸出?
[(2, 18), (4, 250), (3, 500), (1, 1000)]
# all:可迭代對象中,全都是True才是True

l1 = [1,'',[1,3],(2,4)]
print(all(l1))

# any:可迭代對象中,有一個True 就是True

print(any([1,0,'',()]))
False
True

??zip函數(shù)用于將可迭代的對象作為參數(shù),將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的列表。
??需要注意的是,如果各個迭代器的元素個數(shù)不一致,則返回列表長度與最短的對象相同。

# zip
l1 = [1,2,3,5,6,7]
tu1 = ('hiDaLao','Cinderella', 'Nick', 'Holy')
dic = {'name': 'hiDaLao', 'age':22, 'hobby': 'tea', 'weight':65}
print(list(zip(l1,tu1,dic)))
[(1, 'hiDaLao', 'name'), (2, 'Cinderella', 'age'), (3, 'Nick', 'hobby'), (5, 'Holy', 'weight')]

filter 過濾 通過你的函數(shù),過濾一個可迭代對象,返回的是迭代器。注意其與列表推導式的區(qū)別。

#filter

#需求:輸出1-10中的所有偶數(shù)。

print([i for i in range(1,11) if i % 2 == 0])   #列表推導式

l2 = [i for i in range(1,11)]
def func2(x):
    return x % 2 == 0
print(list(filter(func2,l2)))
[2, 4, 6, 8, 10]
[2, 4, 6, 8, 10]

map函數(shù)為序列提供了一種新的定制方法。詳見代碼:

# map
# 需求:將輸出l1列表中每個元素的平方
l1 = [1,2,3,4]
print([i**2 for i in l1])

def func3(x):
    return x**2
print(list(map(func3,l1)))
[1, 4, 9, 16]
[1, 4, 9, 16]
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 內置函數(shù)續(xù): 35.bytes 函數(shù) bytes 函數(shù)返回一個新的 bytes 對象,該對象是一個 0 <= x ...
    一只小釆鳥閱讀 545評論 0 1
  • 一、快捷鍵 ctr+b 執(zhí)行ctr+/ 單行注釋ctr+c ...
    o_8319閱讀 6,043評論 2 16
  • 《霍亂時期的愛情》放在案頭已有好幾個月,終于因著一場大霧的來臨未能如常去上班,而在連續(xù)閱讀12小時之后,合上了這本...
    曉月漫想閱讀 460評論 0 0
  • 畫線稿比較輕松,涂色尤其涂葉脈時,略微找到感覺了,但還是生疏,需要繼續(xù)努力,看來做事要堅持下去才能有所進步。 關于...
    清涼世界雨閱讀 379評論 0 28
  • 20170831周慧心賞第17天 親愛的老公,昨晚你給女兒的成績報告單上寫家長評語,寫的都是女兒的優(yōu)點,...
    hmzhou閱讀 322評論 0 1

友情鏈接更多精彩內容