Python—day3

?

1、字符串在C里邊就是字符數組

  Python里邊一切事物都是對象,對象則是類創建的

  

?2、set集合

  set是一個無序且不能重復的元素集合

  #!/usr/bin/env python
# encoding: utf-8
#set對象不能有重復
s1 = set()
s1.add('alex')
print(s1)
s1.add('alex')
print(s1)
s1.add('shidong')
print(s1)
s1.clear()
print(s1)

s2 = set(['shi','shidong','sd','shi'])
print(s2)

結果:

{'alex'}
{'alex'}
{'shidong', 'alex'}
set()
{'shi', 'shidong', 'sd'

?

  set中可以有添加列表

s2 = set(['shi','shidong','sd','shi'])
print(s2)

difference函數生成新的集合

s2 = set(['shi','shidong','sd','shi'])

s3 = s2.difference('shi','shidong')

print(s3)

結果:

{'sd'}

?

#def:difference_update ,刪除傳入參數,并改變原來的set()集合,
#但是s2.difference_update 集合并沒有內容
s2 = set(['shi','shidong','sd','shi'])
s4 = s2.difference_update(['shidong','sd'])
print(s2)
print(s4)
#discard 移除元素 intersection 取交集,新創建一個set
#symmetric_difference() 取到兩個集合的差集,遍歷兩個集合,把兩個集合的差集合并成一個集合
#isdisjoint 如果沒有交集返回True
#issubset 是否是子集
#issuperset 是否是父集
#remove 只移除元素,需要加參數,并且沒有返回值
#pop 移除一個元素,也可以把移除的元素賦值到新的集合中
s2 = set(['shi','shidong','sd','shi'])
ret = s2.pop()
print(s2)
print(ret)

3、collections系列

?一、計數器(counter)

  Counter 是對字典類型的補充,用于追蹤值的出現次數

  ps:具備字典的所有功能 + 自己的功能

1、c = Counter('abcdfasdfdsfa')
2、print c
3、輸出: Counter({'a':5, 'b':4,'c':3,'d':2,'e':1})

   Counter方法:查找對象的前幾位:

    例如:

    #!/usr/bin/env python
    # encoding: utf-8
    import collections
    obj = collections.Counter('shidong')
    ret = obj.most_common(4)????? #most_common :顯示對象的前四位
    print(ret)

    #elements 方法:用來循環對象中的內容
for item in obj.elements():
print(item)
#循環并取出對象中的健值以及values
for k,v in obj.items():
print((k,v))

#update 方法:增加元素
obj = collections.Counter(['11','22','22','33'])
print(obj)
obj.update(['eric','11','11'])
print(obj)
#刪除元素substract()
obj.subtract(['eric','11'])
print(obj)

?

二、有序字典(orderedDict)

orderdDict是對字典類型的補充,他記住了字典元素添加的順序

  #有序字典OrderedDict()
dic = collections.OrderedDict()
dic['k1'] = 'v1'
dic['k2'] = 'v2'
dic['k3'] = 'v3'
print(dic)

#把某個鍵跟值拿到最后
dic.move_to_end('k2')
print(dic)

#按照順序拿:拿最后一個健值,按照后進先出執行:popitem()
dic.popitem()
print(dic)
#自己指定去拿那個pop(),而且能夠返回值
dic.pop('k1')
print(dic)
ret = dic.pop('k3')
print(ret)

#setdefault 設置默認值
#update()方法,不存在則增加值,存在則更改值
#字典默認輸出的時候只輸出key
dic.update({'k1':'v111','k2':'v10','k3':'22'})
print(dic)

?

三、默認字典(defaultdict)

defaultdict是對字典的類型的補充,他默認給字典的值設置了一個類型。

?四、隊列(deque)

#!/usr/bin/env python
# encoding: utf-8
#Python提供了兩種隊列:一種是雙向隊列一種是單項隊列(先進先出FIFO)
#棧就相當于彈匣,后進先出
import collections
d = collections.deque()
d.append('1')
#在左側插入
d.appendleft('10')
d.appendleft('1')
d.appendleft('5')
print(d)
#查看某個元素的個數count方法
print(d.count('1'))
#擴展extend(向右側擴展)
d.extend(['yy','uu','ii'])
print(d)
#擴展extendleft(像左側擴展)
d.extendleft(['shi','dong'])
print(d)
#刪除某個值remove
d.remove('shi')
print(d)
#反轉reverse
d.reverse()
print(d)
#rotate(英文意思:旋轉,輪換,使輪流),功能:做到首尾連接
#最后一個元素能夠連接到第一個元素,從右邊的數據拿到左邊輪
#插入
d.rotate()
print(d)
d.rotate(3)
print(d)

五、拷貝 ——深淺拷貝
數字、字符串用的是同樣的內存地址,復制操作不會改變內存地址
其余拷貝會改變內存地址,,淺拷貝只拷貝第一次,不會拷貝多層,
深拷貝會全部拷貝。

六、單項隊列(先進先出)
#單項隊列在queue模塊中
import queue
#創建單項隊列
q = queue.Queue()
#往里邊插入一條數據
#qsize()方法:拿到隊列的個數
q.put('shi')
q.put('123')
print(q.qsize())
#從里邊拿數據
print(q.get())

七、函數
在學習函數之前,一直遵循:面向對象編程,即:根據業務邏輯從上到下實現功能,其往往用一段代碼來實現指定功能,
開發過程中最常用的功能就是粘貼復制,也就是將之前實現的代碼塊復制到現需功能處,如下:
  while True:
    if cpu利用率 > 90%:
      #發送郵件提醒
      連接 郵件服務器
      發送郵件
      關閉連接
     if 硬盤使用空間 > 90%
      #發送郵件提醒
      連接郵件
      關閉連接
      if 內存占用 > 80%
      #發送郵件提醒
      連接郵件
      關閉連接

  定義函數:
  def name():
try方法:(首先執行try方法中的代碼,如果代碼錯誤則執行except中的代碼)
try:
  ...
except Exception:
  ...

函數發送郵件示例:
 
#!/usr/bin/env python
# encoding: utf-8
#函數:自定義函數 函數格式
import smtplib
from email.mime.text import MIMEText
from email.utils import formataddr
def mail():
ret = 123
try:
msg = MIMEText('收到即為成功','plain','utf-8')
msg['From'] = formataddr(["史冬",'sd880413@sina.cn'])
msg['To'] = formataddr(["sd", '980653381@qq.com'])
msg['Subject'] = "測試函數郵件"

server = smtplib.SMTP("smtp.sina.cn",25)
server.login("sd880413@sina.cn","shidong00")
server.sendmail('sd880413@sina.cn',['980653381@qq.com',],msg.as_string())
server.quit()
except Exception:
ret = 456
return ret

ret = mail()

if ret:
print("發送成功!!")
else:
print("發送失敗!!")



如果一個函數中沒有return,那么函數會返回None
return放在函數和方法中,一遇到return值,那么return后的代碼則不會執行:return——1、中斷函數操作2、返回函數值
#!/usr/bin/env python
# encoding: utf-8
#無參數
#show(): -->show()

# 一個參數
# def show(arg):
# print(arg)
# show('kkkk')

#兩個參數
# def show(arg,xxx):
# print(arg,xxx)
# show('kkkk','777')
#默認參數,給形參加上一個數值,如果在調用的時候不指定參數,那么就會返回
#形參的指定值,默認參數必須放在最后。
# def show(a1,a2=888):
# print(a1,a2)
# show(33)
# show(22,44)

#指定參數:
# def show(a1,a2):
# print(a1,a2)
# show(a2=23,a1=111)

#動態參數:參數也可以是列表,一顆星代表把所有的參數自動轉換成一個元組
#兩個星代表把傳入的所有參數全都轉換成一個字典
#一顆星:
# def show(*arg):
# print(arg,type(arg))
# show(1,2,3,3,4,5,7,)

#兩顆星
# def show(**arg):
# print(arg,type(arg))
# show(a1=88,uu=213)

#一星、兩星共用
def show(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))
show(1,2,3,3,2,111,n=2,a=5)
結果:
(1, 2, 3, 3, 2, 111) <class 'tuple'>
{'a': 5, 'n': 2} <class 'dict'>
示例:
#一星、兩星共用
def show(*args,**kwargs):
print(args,type(args))
print(kwargs,type(kwargs))
#show(1,2,3,3,2,111,n=2,a=5)
l = [11,22,33,44]
d = {'n1':88,'alex':'sb'}
#如果直接添加參數,那么可能會被系統默認為是元組或者列表,
#字典也會加入到一星的動態參數中,如果想要對應加入,如:字典要
#放到兩星參數中,則采用如下方法
show(*l,**d)
結果:
(11, 22, 33, 44) <class 'tuple'>
{'n1': 88, 'alex': 'sb'} <class 'dict'>

?使用動態參數實現字符串格式化:
#字符串格式化,并傳入動態參數
s1 = "{0} is the best {1}"
resul = s1.format('shidong','man')
print(resul)


結果:
shidong is the best man

或者 如:
#字符串格式化,并傳入動態參數
s1 = "{0} is the best {1}"
l1 = ['shidong','winner']
#resul = s1.format('shidong','man')
resul = s1.format(*l1)
print(resul)

結果:
shidong is the best winner

或者 如:
s1 = "{name} is {acter}"
result = s1.format(name = 'shidong',acter = 'successful')
print(result)
結果:
shidong is successful
如果是參數是字典,需要加兩星
s1 = "{name} is {acter}"
d = {'name':'shidong','acter':'successful'}
result = s1.format(**d)
print(result)
結果:
shidong is successful

八、lambda表達式:簡單函數的簡單表示
例如:
lambda表達式:
func = lambda a :a + 1
#創建形式參數a
#函數內容,a + 1 并把結果return
ret = func(98)
print(ret)
結果:
99

九、內置函數

這些內置函數不需要導入任何模塊就能使用。

abs():絕對值:
a = -1
ret = abs(a)
print(ret)


all():判斷元素,如果所有都為真才為真,如果為空或者None也為假
查看真假用bool
例如:

any():只要里邊有真的就為真

ascii() :可以得到一個返回值

?ascii(8) 相當于int.__repr__()

bin():表示二進制

>>>bin(10)

‘0b1010’

bool():布爾

bytearray():把傳入的字符串、列表轉換成字節數組

一個漢字需要占用3個字節

ret = bytearray('史冬',encoding='utf-8')
print(ret)


結果:bytearray(b'\xe5\x8f\xb2\xe5\x86\xac')

?callable():函數 查看函數兒能否被調用,是否可執行

例如:

func = lambda a : a + 1
print(func(2))
print(callable(func))


結果:
3
True
chr() 和ord() 兩個要經常一起用,一個是把數字轉換成ASCII碼,一個是把ASCII轉換成數字
chr():把數字轉換成字符,ord()把字符轉換成數字
import random
a = random.randint(97,120)
b = chr(a)
print(a,b)

compile():編譯用到的

enumerate():函數會添加一個序列用來記錄序列,例如:

li = ["alex","shidong","xian"]
for i,item in enumerate(li,1):
print(i,item)
結果:
1 alex
2 shidong
3 xian
eval()函數:可以用于計算Excel表格中的運算,例如:
a = eval('6*8')
print(a)


結果:
48

map:

map示例:map左邊有多少然后經過條件后,右邊相對應的過濾出來,例如:

li = [11,22,33,44,]
new_li = map(lambda x : x + 100,li)
l = list(new_li)
print(l)
結果:
[111, 122, 133, 144]

filter()函數:起到過濾作用
def func(x):
if x > 33:
return True
else:
return False

li = [11,22,33,44,]

ret = filter(func,li)
print(list(ret))


float()函數:把一個數轉換成float類型
frozenset()函數:凍結集合
globals()函數:當前的全局變量
oct()函數:八進制
hex()函數:十六進制
例如:
hex(10)
結果:0xa

locals()函數:局部變量
max()函數:拿到最大值
例如:
print(max(11,22,3,34,534456345,))

結果:534456345
open()函數:打開文件
range()函數:拿到區間值
round()函數:四舍五入
zip()函數:兩個對象的元素對應起來
例如:
x = [1,2,3,4,]
y = [2,3,4,5,]
ziped = zip(x,y)
wo = list(ziped)
print(wo)


結果:
[(1, 2), (2, 3), (3, 4), (4, 5)]

 

?

read():可以讀取幾個字節,例如:
#!/usr/bin/env python
# encoding: utf-8
f = open('test.log','r',encoding='utf-8')
#f.write('hello world!!!')
ret = f.read(2)
print(ret)
f.close()
readable():是否可讀
readline():僅讀取一行
seek():指定文件中指針位置
seekable():指針是否可操作
tell():獲取指針位置 ()指的是字節)
例如:
#!/usr/bin/env python
# encoding: utf-8
f = open('test.log','r',encoding='utf-8')
#print(f.tell())
#ret = f.read(2)#按照字符來拿
#print(f.tell())#tell按照字節執行
f.seek(1)#讓指針跳到哪兒
ret = f.read()#不加參數全部讀出來,加參數指定讀取字符
#print(f.tell())
f.close()
print(ret)

truncate()函數:讀取指針前面的數,刪除指針后面的數,然后保存源文件





?

?

?



?












?

    

?

?

轉載于:https://www.cnblogs.com/sd880413/p/7521213.html

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

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

相關文章

iOS - The file “XXX.app” couldn’t be opened because you don’t have permission to view it.

當引入第三方的框架的時候 容易產生以下問題&#xff1a; The file “XXX.app” couldn’t be opened because you don’t have permission to view it. 如圖&#xff1a; 造成的原因&#xff1a; info文件中的字段Executable file 與 build settings欄中的Packaging中的Produc…

Google Guava v07范例

我們在TouK舉辦了一個名為“每周技術研討會”的活動&#xff0c;即每個星期五的16:00&#xff0c;每個愿意參加的人都有一個演講。 我們展示了我們在家學習和學習的東西&#xff0c;但是我們也設有一個公告板&#xff0c;上面有人們想聽的話題。 上周MaciejPrchniak談論了Cloju…

推薦一些經過實踐檢驗的學習方法

作者做了多年的Java培訓教師&#xff0c;也接觸過不少初學者&#xff0c;根據多年的教學互動經驗&#xff0c;總結了一些能少走彎路的學習方法&#xff0c;供大家參考。 第一&#xff0c;是要多學多練&#xff0c;這似乎是廢話&#xff0c;但真正能非常上心學習的人還真是少數&…

使JFrame透明

首先創建一個帶有滑塊的框架&#xff0c;該滑塊將用于設置透明度量。 import javax.swing.JFrame; import javax.swing.JSlider;public class TransparentFrame extends JFrame {public TransparentFrame() {setTitle(Transparent Frame);setSize(400,400);setDefaultCloseOper…

第一次作業之成員介紹

Lab205的新鮮血液 很理所當然的&#xff0c;實驗室的4枚“小鮮肉”在現代軟工的課程上組成了一個team&#xff0c;作為一個負責的team長&#xff0c;我當然要放上組員們的自述啦&#xff01;&#xff08;為什么不是他述&#xff0c;╭(╯^╰)╮&#xff0c;誰讓我是個傲嬌的組長…

java自定義分頁標簽_自定義分頁標簽--仿javaeye分頁效果

效果如圖&#xff1a;1、JSP規范1.1版本后增加了自定義標簽庫。實現自定義標簽的步驟(1)開發自定義標簽處理類。(2)建立*.tld文件。(3)在web.xml中增加自定義標簽的定義。(4)在jsp中使用自定義標簽。2、自定義標簽類(1)繼承javax.servlet.jsp.tagext.TagSupport(2)標簽類屬性&a…

Java隱藏代碼

不久前&#xff0c;我遇到了字符串中不可見字符的問題。 因為它們是不可見的&#xff0c;所以它們確實會引起混亂。 String a "Hello\u200e";String b "Hello\u200f";System.out.println(\ a " and " b " are length " a.length…

201521123052《Java程序設計》第5周學習總結

1. 本周學習總結 1.1 嘗試使用思維導圖總結有關多態與接口的知識點。 1.2 可選&#xff1a;使用常規方法總結其他上課內容。 學習了更多markdown的知識 參考資料: 百度腦圖 XMind 2. 書面作業 作業參考文件下載 1.代碼閱讀&#xff1a;Child壓縮包內源代碼package parent;publi…

Deepin安裝Curl的方法

Deepin安裝Curl的方法 以Deepin為例&#xff0c;只需一條命令即可&#xff1a; sudo apt-get install curl libcurl3 libcurl3-dev php5-curlposted on 2017-09-15 23:22 MissA-VeryGood 閱讀(...) 評論(...) 編輯 收藏 轉載于:https://www.cnblogs.com/MissA-VerGood/p/752911…

亞信聯創java面試題_亞信聯創面試題及答案

1. Vector & ArrayList1) Vector的方法都是同步的(Synchronized),是線程安全的(thread-safe)&#xff0c;而ArrayList的方法不是&#xff0c;由于線程的同步必然要影響性能&#xff0c;因此,ArrayList的性能比Vector好。2) 當Vector或ArrayList中的元素超過它的初始大小時,…

HTTP協議之http狀態碼詳解

什么是HTTP狀態碼 HTTP狀態碼的作用是&#xff1a;Web服務器用來告訴客戶端&#xff0c;發生了什么事。 狀態碼位于HTTP Response 的第一行中&#xff0c;會返回一個”三位數字的狀態碼“和一個“狀態消息”。 ”三位數字的狀態碼“便于程序進行處理&#xff0c; “狀態消息”更…

有用的Ant構建標簽

問題&#xff1a; 如何在ant文件中執行以下任務&#xff1f; 制作zip文件。 運行命令。 將文件復制到遠程計算機。 在遠程Linux機器上運行命令。 打開輸入框并響應輸入值。 撥打螞蟻電話。 答案&#xff1a; 1.制作zip文件&#xff1a; 以下是在ant中制作zip文件的xml…

poj-2955-Brackets-區間DP

poj-2955-Brackets-區間DP BracketsTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 9014 Accepted: 4829Description We give the following inductive definition of a “regular brackets” sequence: the empty sequence is a regular brackets sequence,if s …

Python調用(運行)外部程序

在Python中可以方便地使用os模塊運行其他的腳本或者程序&#xff0c;這樣就可以在腳本中直接使用其他腳本&#xff0c;或者程序提供的功能&#xff0c;而不必再次編寫實現該功能的代碼。為了更好地控制運行的進程&#xff0c;可以使用win32process模塊中的函數。如果想進一步控…

Java中已檢查和未檢查的異常

Java有兩種類型的異常-已檢查和未檢查。 簡而言之&#xff0c;選中的是指開發人員可以從異常中合理恢復的情況&#xff0c;而未選中的異常是無法處理的編程錯誤。 本文介紹了何時使用哪種。 但這不是那么簡單–受檢查的異常使代碼變得“丑陋”。 它們迫使開發人員編寫try / cat…

CCF - 201403-3 - 命令行選項

問題描述 試題編號&#xff1a;201403-3試題名稱&#xff1a;命令行選項時間限制&#xff1a;1.0s內存限制&#xff1a;256.0MB問題描述&#xff1a; 問題描述請你寫一個命令行分析程序,用以分析給定的命令行里包含哪些選項。每個命令行由若干個字符串組成,它們之間恰好由一個空…

java 枚舉 values_JAVA 枚舉運用一 values方法

importjava.lang.reflect.Method;importjava.lang.reflect.Type;importjava.util.Set;import java.util.*;public classEnumJavaClass {public enumEnumClass{One("參數變量枚舉一"),Two("參數變量枚舉二"),Three("參數變量枚舉三");privateStri…

telnet測試端口是否正常打開

點擊計算機的開始菜單--》運行 &#xff0c;輸入CMD命令&#xff0c;然后確定。打開cmd命令行。 輸入telnet測試端口命令&#xff1a; telnet IP 端口 或者 telnet 域名 端口 回車 如果端口關閉或者無法連接&#xff0c;則顯示不能打開到主機的鏈接&#xff0c;鏈接失敗 端口…

Linux歷史,安裝,分區,版本

Linux 歷史 1970年是 UNIX元年&#xff0c;這一年 Kenneth Lane Thompson 和 Dennis Ritchie 合作編寫了UNIX系統。Stallman 發起了GNU 計劃&#xff0c;他本人開發了Emacs, GCC, GDB.Minix&#xff1a;教學用的類UNIX系統&#xff0c;由于UNIX是收費的且價格昂貴&#xff0c;因…

放棄Eclipse Juno

在上一個博客中&#xff0c;我發布了有關Eclipse 4.2 Juno設置的信息。 萬一我需要重新安裝其他東西&#xff0c;也可以作為參考。 當時我沒有談論的是我與Juno共同遇到的問題。 我以為這是我自己的安裝程序&#xff0c;很麻煩&#xff0c;但是此后并沒有太大改善。 我遇到的主…