python高階特性

2021-08-20 13:26:31 字數 4950 閱讀 8550

1、字典的迭代

1、key值迭代

d = dict(a=1,b=2)

for i in d:

print(i)

2、key->value值迭代

for i in d:

print("%s -> %s"

%(i,d[i]))

3、key ->value迭代

for key,value

in d.items():

print('%s -> %s' %(key,value))

2、判斷物件是否可迭代

需要匯入iterable模組

from collections import iterable    ##匯入模組

print(isinstance(1,int)) ##判斷1是否是整形

print(isinstance(1,iterable)) ##判斷整形是否可迭代

print(isinstance(1.02,iterable)) ##判斷浮點型是否可迭代

print(isinstance(2e-9,iterable)) ##判斷浮點型是否可迭代

print(isinstance(true,iterable)) ##判斷bool型是否可迭代

print(isinstance('hello',iterable)) ##判斷字串是否可迭代

print(isinstance(,iterable))#判斷字典是否可迭代

2、字串的迭代

for index,value

in enumerate('hello'): ##enumerate 索引,講hello字串的索引值和元素對應列印

print(index,value)

1、隨即生成100個ip

1、傳統方式生成:

import random

ips =

for i in range

(100):

ip = '172.25.254.'+ str(random.randint(1

,255))

print(ips)

print(len(ips))

2.列表生成式:

import random

li = [ '172.25.254.'+str(random.randint(1

,255)) for i in range

(100)]

print(li)

print(len(li))

def

is_div_therr

(num):

return num%3 ==0

print([num**2

for num in range(1,101) if is_div_therr(num)])

練習:

1、顯示列表,1-1–只見的所有數求平方

print([i**2

for i in range(1,1011)])

2、找出/var/log/目錄中所有以.log結尾的檔案

import os

print([ filename for filename in

os.listdir('/var/log') if filename.endswith('.log')])

3、找出/etc/目錄中的所有以.conf結尾的檔案,並把檔名轉化為大寫的檔名

print([ filename.upper() for filename in

os.listdir('/etc/') if filename.endswith('.conf')])

4、判斷10以內的所有質數,並找出質數相加等於10的質數對

def

is_prime

(num):

if num<=0:

return

false

elif num==1

and num ==2:

return

true

else:

for i in range(2,num):

if num%i ==0:

return

false

else:

return

true

n = 10

primes_list = [ num for num in range(10) if is_prime(num)]

primes_pair = [(num1,n-num1) for num1 in primes_list if n - num1 in primes_list and num1<= n-num1]

print(len(primes_pair))

print(primes_pair)

3、集合生成式

print()

d = dict(a=6,b=2,c=3,e=6)

print()

4、字典生成式

service = 

需求1、將字典裡面的key值變大寫

##傳統方法:

new_service = {}

for key,value

in service.items():

new_service[key.upper()] = value

print(new_service)

##字典生成式:

print()

需求2、key值變成大寫, value值在原有基礎上加1

print()

大小寫合併,統一以小寫key值輸出

d = dict(a=2,b=10,b=4,e=1,a=1)

print(

1、列表生生成式轉化為生成器

li = [ i for i in

range(100) if i%2 ==0]

##生成器

g = (i for i in

range(100) if i%2 ==0)

2、檢視生成器的方式:

python3中 g.next方法(), python2.x中g.next()方法;

print(g.__next__())
3、生成器的for迴圈

for i in g:

print(i)

4、for迴圈 的底層原理

g1 = (i for i in range(3))

while

true:

try:

print(g1.__next__())

except stopiteration:

break

5、fib生成器

fib是值後乙個值是前兩個值相加:1,1,2,3,5,8…

def

fib(num):

# num=5

a, b, count = 0, 1, 1

# a=0, b=1

while count <= num:

yield b # 1

a, b = b, a + b # a=1, b=1

count += 1

g = fib(10) # 如果函式中有yield關鍵字, 返回乙個生成器物件;目前不執行函式內容;

print(g.__next__()) # 當遇到g.__next__方法時, 執行函式, 當遇到yield停止執行; print(g.__next__())時yield後面的值;

print(g.__next__()) # 再次呼叫g.__next__方法時, 從上次停止的地方繼續執行, 遇到yield停止;

g.close() # 關閉生成器

#全部列印

for i in g:

print(i)

6、迷你機械人

def

chat_robot

(): res = ''

while

true:

received = yield res

if'age'

in received or

'年齡'

in received:

res = '年齡保密'

elif

'name'

in received or

'姓名'

in received:

res = '我是小冰'

elif

'money'

in received or

'錢'in received:

res = '沒錢'

else:

res = '我不知道你在說什麼,請換種方法'

defmain

(): robot = chat_robot()

robot.__next__()

while

true:

send_data = input("my>>")

if send_data=='q'

or send_data == 'quit':

print('我也要休息了')

break

robot_data = robot.send(send_data)

print('小冰》',robot_data)

main()

Python高階特性

l csx sarah tracy bob jack print l 0 l 1 l 2 輸出 csx sarah tracy l 0 3 輸出 csx sarah tracy 如果第乙個索引是0,還可以省略 print l 2 輸出 bob jack print l 2 1 輸出 bob d fo...

Python高階特性

python 高階特性 from collections import iterable from collections import iterator 切片 list切片 l list range 100 print l 0 3 取前3個元素 print l 3 取前3個元素 print l 4...

Python高階特性

切片 slice 非常靈活,體現了python的簡便性 1.取乙個list和tuple的部分元素時的簡化操作 l michael sarah tracy bob jack l 0 3 michael sarah tracy 從0開始不包括3,第乙個索引是0可省略,也支援負數按倒數的順序取值,什麼都不...