欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

通過代碼實(shí)例了解Python3編程技巧

 更新時(shí)間:2020年10月13日 09:18:22   作者:py魚  
這篇文章主要介紹了通過代碼實(shí)例了解Python3編程技巧,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下

高效處理數(shù)據(jù)類型方法:

處理數(shù)據(jù)

In [1]: from random import randint

In [2]: data=[randint(-10,10) for _ in range(10)]

In [3]: data
Out[3]: [-3, -4, 3, 4, 7, -2, -4, 1, 7, -9]

#過濾列表中的負(fù)數(shù)
In [9]: list(filter(lambda x:x>=0,data))
Out[9]: [3, 4, 7, 1, 7]

[for x in data if x>=0]
# 列表生成式解法
[x for x in data if x>=0]

#哪個(gè)更快,列表解析更快,遠(yuǎn)快于迭代
In [15]: %timeit [x for x in data if x>=0]
581 ns ± 23.8 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

In [16]: %timeit filter(lambda x:x>=0,data)
237 ns ± 4 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

#得到20個(gè)同學(xué)的成績(jī)
d={x:randint(60,100)for x in range(1,21)}
#字典解析式,iteritems同時(shí)迭代字典,
#
#得到分?jǐn)?shù)大于90的同學(xué)
{k:v for k,v in d.items() if v>90}


#集合解析
In [35]: {x for x in s if x %3 ==0}
Out[35]: {-9, -3, 3}

#為元祖中的每個(gè)元素命名,提高程序可讀性
#元祖存儲(chǔ)空間小,訪問速度快
#定義常量
NAME = 0
AGE=1
SEX=2
EMAIL=3
#拆包用法,定義類似其他語言的枚舉類型,也就是定義數(shù)值常量
NAME,AGE,SEX,EMAIL=range(4)

#案例
student=('Jim',16,'male','jin@163.com')
#name
print(student[0])
#age
print(student[1])
#通過常量可以優(yōu)化為
print(student[NAME])
print(student[AGE])

#namedtuple是繼承自tuple的子類,namedtuple和tuple比較有更酷的特性
#namedtuple創(chuàng)建一個(gè)和tuple類似的對(duì)象,而且對(duì)象擁有可以訪問的屬性。這對(duì)象更像帶有數(shù)據(jù)屬性的類,不過數(shù)據(jù)屬性是只讀的。
from collections import namedtuple
Student = namedtuple('Student',['name','age','sex','email'])
s=Student('Jim',16,'male','jim@163.com')
s.name 
s.age

#統(tǒng)計(jì)序列中元素出現(xiàn)的頻度
from random import randint
data=[randint(0,20) for _ in range(30)]
#創(chuàng)建字典{0:0,1:0,...}
#方法1
c=dict.fromkeys(data,0)
In [52]: for x in data:
  ...:   c[x]+=1

#方法2,統(tǒng)計(jì)詞頻
from collections import Counter
c2=Counter(data)#講序列傳入Counter的構(gòu)造器,得到Counter對(duì)象是元素頻度的字典
#使用most_common統(tǒng)計(jì)詞頻
In [58]: c2.most_common(3)
Out[58]: [(10, 4), (20, 3), (8, 3)]
#統(tǒng)計(jì)英文作文詞頻
import re
txt=open('emmmm.txt').read()
#分割后賦給Counter
c3=Counter(re.split('\W',txt))
#找到頻率最高的10個(gè)單詞
c3.most_common(10)

#內(nèi)置函數(shù)是以c的速度運(yùn)行,如sorted
from random import randint 
d={x:randint(60,100) for x in 'xyzabc'}
#{'a': 91, 'b': 65, 'c': 76, 'x': 85, 'y': 84, 'z': 72}
# sorted(d)
In [15]: zip(d.values(),d.keys())
Out[15]: <zip at 0x108b34dc8>

In [16]: list(zip(d.values(),d.keys()))
Out[16]: [(68, 'x'), (70, 'y'), (77, 'z'), (72, 'a'), (65, 'b'), (69, 'c')]

#快速找到多個(gè)字典中的公共鍵
#In [1]: from random import randint,sample

In [2]: sample('abcdefg',3)
Out[2]: ['c', 'a', 'b']


In [4]: sample('abcdefg',randint(3,6))
Out[4]: ['b', 'a', 'd']

In [5]: s1={x:randint(1,4)for x in sample('abcdefg',randint(3,6))}

In [9]: s1
Out[9]: {'a': 1, 'b': 2, 'c': 3, 'f': 3, 'g': 3}

In [10]: s1={x:randint(1,4)for x in sample('abcdefg',randint(3,6))}

In [11]: s1
Out[11]: {'b': 2, 'd': 3, 'g': 3}

In [12]: s1
Out[12]: {'b': 2, 'd': 3, 'g': 3}

In [13]: s2={x:randint(1,4)for x in sample('abcdefg',randint(3,6))}

In [15]: s3={x:randint(1,4)for x in sample('abcdefg',randint(3,6))}
#for循環(huán)遍歷方法,找到s2,s3都有的k
In [19]: res=[]

In [20]: for k in s1:
  ...:   if k in s2 and k in s3:
  ...:     res.append(k
  ...:     )
  ...:     
  ...:     

In [21]: res
Out[21]: ['b']
#通過字典的keys()方法,找到三個(gè)字典同樣的key
In [26]: s1.keys()&s2.keys()&s3.keys()
Out[26]: {'b'}
#通過map得到一個(gè)迭代器對(duì)象
#In [27]: map(dict.keys,[s1,s2,s3])
Out[27]: <map at 0x108891b70>

In [28]: list(map(dict.keys,[s1,s2,s3]))
Out[28]: 
[dict_keys(['g', 'd', 'b']),
 dict_keys(['g', 'a', 'c', 'b', 'f']),
 dict_keys(['d', 'f', 'b', 'c', 'e', 'a'])]
#通過reduce取出同樣結(jié)果
In [30]: from functools import reduce

In [31]: reduce(lambda a,b:a&b,map(dict.keys,[s1,s2,s3]))
Out[31]: {'b'}

#使得
from time import time
from random import randint
from collections import OrderedDict

d=OrderedDict()
players = list("ABCDEFGH")
start=time()
for i in range(8):
  input()
  p=players.pop(randint(0,8-i))
  end=time()
  print(i+1,p,end-start)
  d[p]=(i+1,end-start)
print('')
print('-'*20)
for k in d:
  print(k,d[k])
#查看用戶歷史記錄功能,標(biāo)準(zhǔn)庫collections的deque,雙端循環(huán)隊(duì)列,存在內(nèi)容中,pickle存儲(chǔ)到文件
from random import randint
from collections import deque
N = randint(0,100)
history = deque([],5)
def guess(K):
  if K ==N:
   print('正確')
   return True
  if K < N:
   print('%s is less-than N'%K)
  else:
    print("%s is greater-than N"%K)
  return False
while True:
  line = input("請(qǐng)輸入一個(gè)數(shù)字:")
  if line.isdigit():
   k=int(line)
   history.append(k)
   if guess(k):
     break
  elif line =='history' or line =='h?':
    print(list(history))

可迭代對(duì)象和迭代器對(duì)象:

可迭代與迭代器對(duì)象

可迭代對(duì)象和迭代器對(duì)象

需求:從網(wǎng)絡(luò)抓取每個(gè)城市的氣溫消息,顯示
北京:15-20
黑龍江:3-10
上海13-19
一次抓取所有城市信息,會(huì)占很大的存儲(chǔ)空間,現(xiàn)在想“用時(shí)訪問”,吧所有城市氣溫封裝到一個(gè)對(duì)象里,用for迭代

可迭代對(duì)象:

In [1]: l=[1,2,3,4,5]

In [2]: s='abcde'

iter內(nèi)置函數(shù),可以得到一個(gè)迭代器對(duì)象
由可迭代對(duì)象,得到迭代器

iter(l)

In [23]: type(l)
Out[23]: list

In [24]: type(iter(l))
Out[24]: list_iterator

可迭代對(duì)象都有__iter方法,可迭代接口
或者_(dá)_getitem__序列接口

可迭代對(duì)象可以通過next()取值

In [26]: t=iter(l)

In [27]: next(t)
Out[27]: 1

In [28]: next(t)
Out[28]: 2

In [29]: next(t)
Out[29]: 3

In [30]: next(t)
Out[30]: 4

In [31]: next(t)
Out[31]: 5

In [32]: next(t)
---------------------------------------------------------------------------
StopIteration               Traceback (most recent call last)
<ipython-input-32-f843efe259be> in <module>()
----> 1 next(t)

StopIteration: 

讀寫取excel文件

Microsoft Excel是Microsoft為使用Windows和Apple Macintosh操作系統(tǒng)的計(jì)算機(jī)編寫的一款電子表格軟件。直觀的界面、出色的計(jì)算功能和圖表工具,再加上成功的市場(chǎng)營銷,使Excel成為最流行的個(gè)人計(jì)算機(jī)數(shù)據(jù)處理軟件。

xlrd使用方法

import xlrd
#打開excel文件,創(chuàng)建一個(gè)workbook對(duì)象,book對(duì)象也就是s11.xlsx文件,表含有sheet名
rbook=xlrd.open_workbook('/Users/yuchao/s11.xlsx')
#sheets方法返回對(duì)象列表,[<xlrd.sheet.Sheet object at 0x103f147f0>]
rbook.sheets()
rsheet=rbook.sheet_by_index(0)
#訪問行數(shù)
rows=rsheet.nrows
#訪問列數(shù)
cols=rsheet.ncols
print('行數(shù):',rows,'列數(shù)',cols)
#通過cell的位置坐標(biāo)取得cell值
cell=rsheet.cell(0,0)
print('0,0坐標(biāo)的值是:',cell.value)
#取得第二行的值,參數(shù)是(行數(shù),起點(diǎn),終點(diǎn))
row1=rsheet.row_values(1)
print('第一行的值是:',row1)

xlwt修改excel

# -*- coding:utf-8 -*-
# Author : yuchao
# Data : 2018/7/18 16:08


import xlrd, xlwt

rbook = xlrd.open_workbook('/Users/yuchao/s11.xlsx')
rsheet = rbook.sheet_by_index(0) # 取得sheet對(duì)象1
# 列數(shù)
nc = rsheet.ncols
# 寫入一條數(shù)據(jù)
rsheet.put_cell(0, nc, xlrd.XL_CELL_TEXT, '總分', None)

# 遍歷數(shù)據(jù)的行數(shù)
for row in range(1, rsheet.nrows):
  # 求和每一行數(shù)據(jù)
  t = sum(rsheet.row_values(row, 1))
  rsheet.put_cell(row, nc, xlrd.XL_CELL_NUMBER, t, None)
#創(chuàng)建文檔對(duì)象
wbook = xlwt.Workbook()
wsheet = wbook.add_sheet(rsheet.name)
#設(shè)置樣式
style = xlwt.easyxf('align: vertical center, horizontal center')
#遍歷每一行
for r in range(rsheet.nrows):
  #每一列
  for c in range(rsheet.ncols):
    wsheet.write(r,c,rsheet.cell_value(r,c),style)
wbook.save('/Users/yuchao/s11_bak.xlsx')

讀取excel

import xlrd
from xlrd.book import Book
from xlrd.sheet import Sheet
from xlrd.sheet import Cell

workbook = xlrd.open_workbook('/Users/yuchao/s11.xlsx')

sheet_names = workbook.sheet_names()

# sheet = workbook.sheet_by_name('工作表1')
sheet = workbook.sheet_by_index(1)

# 循環(huán)Excel文件的所有行
for row in sheet.get_rows():
  # 循環(huán)一行的所有列
  for col in row:
    # 獲取一個(gè)單元格中的值
    print(col.value)

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python常用數(shù)據(jù)結(jié)構(gòu)和公共方法技巧總結(jié)

    Python常用數(shù)據(jù)結(jié)構(gòu)和公共方法技巧總結(jié)

    這篇文章主要介紹了Python常用數(shù)據(jù)結(jié)構(gòu)和公共方法技巧總結(jié),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的朋友可以參考一下
    2022-08-08
  • python中內(nèi)置函數(shù)ord()返回字符串的ASCII數(shù)值實(shí)例詳解

    python中內(nèi)置函數(shù)ord()返回字符串的ASCII數(shù)值實(shí)例詳解

    ord()?函數(shù)是?chr()?函數(shù)(對(duì)于?8?位的?ASCII?字符串)的配對(duì)函數(shù),它以一個(gè)字符串(Unicode?字符)作為參數(shù),返回對(duì)應(yīng)的?ASCII?數(shù)值,或者?Unicode?數(shù)值,這篇文章主要介紹了python?中內(nèi)置函數(shù)ord()返回字符串的ASCII數(shù)值,需要的朋友可以參考下
    2022-07-07
  • Python使用matplotlib顯示圖像實(shí)例

    Python使用matplotlib顯示圖像實(shí)例

    在Python項(xiàng)目中處理圖像數(shù)據(jù)之前,需要確保安裝了matplotlib庫,它是一個(gè)用于繪制圖表和圖像顯示的工具,若尚未安裝,可以使用pip命令進(jìn)行安裝,安裝完成后,可以通過matplotlib的pyplot模塊讀取并顯示MNIST手寫數(shù)據(jù)集中的圖像,若需要顯示灰度圖
    2024-10-10
  • python讀取并定位excel數(shù)據(jù)坐標(biāo)系詳解

    python讀取并定位excel數(shù)據(jù)坐標(biāo)系詳解

    這篇文章主要介紹了python讀取并定位excel數(shù)據(jù)坐標(biāo)系詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-06-06
  • Python實(shí)現(xiàn)多腳本處理定時(shí)運(yùn)行

    Python實(shí)現(xiàn)多腳本處理定時(shí)運(yùn)行

    這篇文章主要介紹了Python實(shí)現(xiàn)多腳本處理定時(shí)運(yùn)行,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-06-06
  • 利用django創(chuàng)建一個(gè)簡(jiǎn)易的博客網(wǎng)站的示例

    利用django創(chuàng)建一個(gè)簡(jiǎn)易的博客網(wǎng)站的示例

    這篇文章主要介紹了利用django創(chuàng)建一個(gè)簡(jiǎn)易的博客網(wǎng)站的示例,幫助大家更好的學(xué)習(xí)和使用django框架,感興趣的朋友可以了解下
    2020-09-09
  • Python sklearn對(duì)文本數(shù)據(jù)進(jìn)行特征化提取

    Python sklearn對(duì)文本數(shù)據(jù)進(jìn)行特征化提取

    這篇文章主要介紹了Python sklearn對(duì)文本數(shù)據(jù)進(jìn)行特征化提取,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)吧
    2023-04-04
  • Python數(shù)據(jù)分析之繪制ppi-cpi剪刀差圖形

    Python數(shù)據(jù)分析之繪制ppi-cpi剪刀差圖形

    這篇文章主要介紹了Python數(shù)據(jù)分析之繪制ppi-cpi剪刀差圖形,ppi-cp剪刀差是通過這個(gè)指標(biāo)可以了解當(dāng)前的經(jīng)濟(jì)運(yùn)行狀況,下文更多詳細(xì)內(nèi)容介紹需要的小伙伴可以參考一下
    2022-05-05
  • 使用 Python 玩轉(zhuǎn) GitHub 的貢獻(xiàn)板(推薦)

    使用 Python 玩轉(zhuǎn) GitHub 的貢獻(xiàn)板(推薦)

    這篇文章主要介紹了使用 Python 玩轉(zhuǎn) GitHub 的貢獻(xiàn)板的相關(guān)知識(shí),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-04-04
  • 使用Python創(chuàng)建websocket服務(wù)端并給出不同客戶端的請(qǐng)求

    使用Python創(chuàng)建websocket服務(wù)端并給出不同客戶端的請(qǐng)求

    本文主要介紹了使用Python創(chuàng)建websocket服務(wù)端并給出不同客戶端的請(qǐng)求,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01

最新評(píng)論