欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

python 填小坑

系統 1908 0

一 Python 語言中有關復數的概念:

1、虛數不能單獨存在,它們總是和一個值為 0.0 的實數部分一起構成一個復數

2、復數由實數部分和虛數部分構成

3、表示虛數的語法:real+imagej

4、實數部分和虛數部分都是浮點數

5、虛數部分必須有后綴j或J

            
              aa=123-12j

print aa.real  # output 實數部分 123.0  
print aa.imag  # output虛數部分 -12.0
print aa.conjugate  # 共軛復數
            
          

?

二 關于 (3, 2) < ('a', 'b')? 返回True這件事

首先肯定的是這樣寫并沒有錯誤,前提是py2運行。?py3 不支持不同類型比較,要這樣("3","2") < ("a", "b")。

可是這樣比較我還是第一次看到過,一臉懵逼,隱隱約約覺得比的是ascii,一番查找還真是,詳情見

https://blog.csdn.net/DeskyAki/article/details/100160599? ?這篇文章, 博主寫得很好

?

三 內置的filter,map,reduce

之前接觸過,也會用它,昨天刷筆試題,非得想用lambda裝會B,結果遇到了些麻煩, 廢了一些時間。

1 map? ? [1, 2, 3, 4] --> [1,0, 1, 0]

            
              l = [1, 2, 3, 4]
result = map(lambda i: 0 if i % 2 == 0 else 1, l)
print(list(result))
            
          

愚蠢的我企圖map(lambda i: 0 for v in l if v % 2 == 0 else 1, l), 顯然是不對的,map傳的第二個參數是可迭代的,它自動幫你迭代。

而且別忘了list()一下,不這樣打印的是map對象。

2 filter??[1, 2, 3, 4] --> [2,4]

            
              l = [1, 2, 3, 4]
result = filter(lambda i:i if i % 2 == 0 else None, l)
print(list(result))

            
          

這里的lambda, 必須寫else,,,

?3 reduce 1到100的階乘

            
              from functools import reduce

result = reduce(lambda a, b: a * b, range(1, 101))
            
          

要引入from functools import reduce

下面是利用遞歸

            
              def fun(n):
    if n == 1:
        return 1
    return n * fun(n-1)


c = fun(100)
            
          

?

四? s = (1, 2, 3)? ? del s[2]? ?會怎樣?

會報錯啊, 小兄弟。首先集合支持切片操作,是可以拿到值的。

但是,元組值不可修改, 這也包括刪除操作, 不能刪除更新元組的某一個值,del s? 會刪除整個集合。元組連像集合的clear()都沒有,不能清空,只能刪除。更新, 所謂的更新也只是再申請一個內存地址,大概這樣子 ll =( s[1] ,s[0], 66 ), 元組允許重復值,可以比較大小。

但設置了s = (1, 1),在設置s = (2, 3), 打印s,s = (2, 3), 也能實現更新, 不過兩個s的id不同,本質不是一個s。

?

五 關于元組和集合

為什么發這么大標題,因為在看似很簡單的字典和集合中,發現了從未注意的東西。

集合和字典的鍵必須是可哈希的,集合里面不能裝列表,字典的鍵可以是元組,但是可變元組不可以(元組套列表)

Python支持 深度哈希 ,這就是 我們可以使用元組作為字典鍵的原因 ,也是我們可以在集合中使用元組的原因。

            
              >>> a = {['1', '2']}
Traceback (most recent call last):
  File "
              
                ", line 1, in 
                
                  
TypeError: unhashable type: 'list'
                
              
            
          

詳見參考?https://blog.csdn.net/DeskyAki/article/details/100160599

?

六 關于*args, **kwargs?

說實話,現在在找工作,還搞這個有些恥ずかしい、但是真有一些細節值得我去深析

            
              def a(*args, **kwargs):
    print(args, type(args))
    print(*args)
    print("xx"*66)
    print(kwargs, type(kwargs))
    print(*kwargs)
    # print(**kwargs)
    # 報錯 'c' is an invalid keyword argument for print()


a(m1, m2, c=[1, 2, 3])

([[1, -2, 1], [-3, 4, 1], [1, 1, 1]], [[2, -1, 1], [0, -1, 1], [1, 1, 1]]) 
              
                
[[1, -2, 1], [-3, 4, 1], [1, 1, 1]] [[2, -1, 1], [0, -1, 1], [1, 1, 1]]
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
{'c': [1, 2, 3]} 
                
                  
c
                
              
            
          

之前我沒想過打印args, *args, kwagrs, *kwagrs, **kwargs, 拿到什么類型的數據, 只是知道這樣可以拿到所有的位置和關鍵字參數,*可以把參數們打亂。

  • 打印args, 拿到被元組包裹的所有的位置參數, 元組類型
  • 打印*args, 拿到所有的位置參數
  • 打印kwargs, 字典類型,關鍵字參數被打成了字典
  • 打印*kwargs, 拿到的卻是關鍵字參數的鍵(叫鍵應該對吧)
  • 而 打印**kwargs, 報錯,, mmm

幾個小例子

            
              a = [([1, -2, 1], [2, -1, 1])]
print(*a)

# ([1, -2, 1], [2, -1, 1])
* 只能打開一層
            
          
            
              a = ([1, -2, 1], [2, -1, 1])
print(*a)
c = zip(*a)
print(list(c))


# [1, -2, 1] [2, -1, 1]
# [(1, 2), (-2, -1), (1, 1)]
雖然打印, 是沒逗號的, 但是zip可以直接用*a
            
          

?小例子

            
              li = [lambda:x for x in range(10)]
print(li)           # [
              
                
                  .
                  
                     at 0x0000018062D97268>, ,,,,,,
print(type(li))     # list
print(type(li[0]))  # function
res = li[0]()
print(res)          # 9
                  
                
              
            
          

下面序號是任意排的

1? 關于類的多態,我原本以為類的多態,是完全分開的,即使面對列表這種可變類型,看來我想多了,類的多態的列表也是一個吊樣。

            
              class P(object):
    n = []
    t = "test"


p1 = P()
p2 = P()
print(p1.t)  # test
print(p2.t)  # test
p1.t = "p1"
print(p1.t)  # p1
print(p2.t)  # test
p1.n.append(1)
p2.n.append(2)
print(p1.n)   # [1, 2]
print(p2.n)   # [1, 2]

            
          

2 反轉單詞和完全不定個數空格組成的字符串,要求單詞中的字母順序不變。

            
              import re

string = "I like  可愛い     もの "
revwords = ''.join(re.split(r"(\s+)", string)[::-1])
print(revwords)

            
          

3 關于類的繼承并設置屬性

            
              class Parent(object):
    x = 1

class Child1(Parent):
    pass

class Child2(Parent):
    pass


Child1.x = 2
Parent.x = 3
print(Parent.x, Child1.x, Child2.x)
# 3 2 3

            
          

七 關于字典的遍歷和修改鍵

1 遍歷字典,增加或刪除鍵值對時,會報錯

            
              untimeError: dictionary changed size during iteration? 字典在遍歷時改變了長度,

            
          

下面兩種都會報錯。。。。

            
              a = {'a': 1, 'b': 0, 'c': 1, 'd': 0}
for key in a.keys():
    if key == 'b':
        del a[key]
print(a)
            
          
            
              a = {'a': 1, 'b': 0, 'c': 1, 'd': 0}
for key in a.keys():
    if key == 'b':
        a.update({"55": 55})
print(a)
            
          

解決: 遍歷時加個list

            
              a = {'a': 1, 'b': 0, 'c': 1, 'd': 0}
for key in list(a.keys()):
    if key == 'b':
        a.update({"55": 55})
print(a)
            
          

2 當遍歷字典時, 修改值不會報錯

            
              a = {'a': 1, 'b': 0, 'c': 1, 'd': 0}
for key in list(a.keys()):
    if key == 'b':
        a[key] = 66
print(a)
            
          

3 字典不能直接修改鍵

可以這樣

            
              a = {"1": 2}
a.update({'c': a.pop("1")})
print(a)
            
          

?

八 關于遍歷列表不能修改值的問題

如下, 直接遍歷數組, 直接在遍歷值上做操作,可以該值,但是無法返回到數組,所以數組是不會變的。

可以用第二種方法, 更改數組的值, 想想真是瑟瑟發抖, 想當然的可以直接修改值,要是筆試面試出現這種基礎問題,估計直接涼涼了吧, 闊怕。

列表生成式, 倒是可以直接修改,因為相當于重寫了原來的列表, 實測前后的arr3 id是相同的。

            
              arr = [4, 2, 0, 2, 6, 3, 1]
arr1 = [4, 2, 0, 2, 6, 3, 1]
arr3 = [4, 2, 0, 2, 6, 3, 1]
for i in arr:
    i += 1
print(arr)

# [4, 2, 1, 2, 6, 3, 1]
for i in range(len(arr1)):
    arr1[i] += 1
print(arr1)
# [5, 3, 2, 3, 7, 4, 2]


q = lambda x: [i+1 for i in x]
print(q(arr3))
# [5, 3, 1, 3, 7, 4, 2]
            
          

?

九 關于迭代器和生成器

?一直沒太弄清的概念, 因為覺得會for 循環就好了。為了應對面試,大概看了看,結果都沒考, GG。

迭代器有next, iter? ? ? ? ? 生成器 使用yield

?

迭代器

for 循環 其實就是先iter(), 在next()。如果沒了元素, next()就會拋出? ?StopIteration異常

            
              l1 = [1, 2, 3]
it = iter(l1)
print(next(it))   # 1
print(next(it))   # 2
            
          

生成器?

創建迭代器的工具,返回數據要用yield

?

?

?

?

?

?

?

?

?


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 日本黄色免费片 | 午夜小网站 | 色老师 | 久久草在线精品视频99 | 久久久久久99 | 五月婷婷激情六月 | 久久1区| 久久久久国产精品免费免费搜索 | 91网站链接 | 97久久精品午夜一区二区 | 在线精品国内外视频 | 国产精品一区二区三区在线播放 | 欧美日韩北条麻妃一区二区 | 草草国产成人免费视频 | 亚洲国产中文字幕 | 欧美亚洲日本国产 | 成人看的一级毛片 | 911色_911色sss主站色播 | 精品不卡 | 黑人群姣中国妞在线观看 | 亚洲综合国产一区二区三区 | 亚洲日本视频在线 | 婷婷色爱区综合五月激情韩国 | 一级黄色播放 | 色婷婷综合久久久中文一区二区 | www国产成人免费观看视频,深夜成人网 | 日韩第一页在线 | 99成人 | 日韩欧美在线中文字幕 | 国产精品亚洲国产 | 99极品视频 | 小明看片成人永久在线观看 | 日日摸狠狠的摸夜夜摸 | 性xxxxx| 日韩在线视频观看免费 | 99久草| 欧美性色综合网 | 日韩欧美在线视频播放 | 免费看黄a | 亚洲 欧美 日韩 在线 | 视频一区 精品自拍 |