Python之生成式

2021-09-10 15:13:12 字數 4401 閱讀 8236

1.集合的生成式

一般格式:

(1).將集合中的每乙個元素分別平方

# 此時輸出的是乙個物件

print(i ** 2 for i in )

# {}:轉換為集合,集合會自動去重

(2).將集合中是3的倍數的所有元素分別平方

2.列表的生成式

一般格式:

[表示式 for i in 列表序列 if ...]

(1).找出1-10之間的所有偶數, 並返回乙個以這個偶數為半徑的圓面積的列表

# 匯入math模組,用於輸入pi

import math

# format: 格式轉換,將pi保留兩位小數

print(float(format(math.pi,'.2f')))

# 列表生成式

# 方法1:

print([float(format(math.pi,'.2f')) * i ** 2 for i in range(1,11) if i % 2 == 0])

# 方法2:

(2).找出1-100之間的質數(只能被自己和1整除的數)

注意: 1不是質數
# 1)普通方法:

# for i in range(2,101):

# for j in range(2, i):

# if i % j == 0:

# break

# else:

# print(i)

# 2)列表生成式:

# 定義函式,判斷是否為質數

def isprime(i):

for j in range(2,i):

if i % j == 0:

return false

else:

return true

# 列表生成式

示例1:

題目描述:

給定乙個正整數,編寫程式計算有多少對質數的和等於輸入的這個正整數,

並輸出結果.輸入值小於1000.如:輸入為10, 程式應該輸出結果為2

(共有兩對質數的和為10,分別為(5,5),(3,7)) # [2,3,5,7]

輸入描述:

輸入包括乙個整數n,(3 ≤ n < 1000)

輸出描述:

輸出對數

示例1:

輸入:10

輸出:2

**:(方法1)

# 1.接收使用者輸入

n = int(input())

# 2.判斷是否為質數

def primefun(i):

for j in range(2,i):

if i % j == 0:

return false

else:

return true

# 3.找到n以內的所有質數並儲存在列表中

primeli = [i for i in range(2,n) if primefun(i)]

# 4.統計滿足條件的個數

# 定義計數器

count = 0

# 遍歷n以內的所有質數;兩個for迴圈便可以得到兩個數

for i in primeli:

for j in primeli:

# 注意:如果不定義i與j的大小,10=3+7=7+3便會記為兩次

if i+j == n and i<=j:

# print(i,j)

# print('%s = %s + %s' % (n,i,j))

count += 1

# 輸出個數

print(count)

執行結果:

**:(方法2)

# 1.接收使用者輸入

n = int(input())

# 2.判斷是否為質數

def primefun(i):

for j in range(2,i):

if i % j == 0:

return false

else:

return true

# 3.找到n以內的所有質數並儲存在列表中

primeli = [i for i in range(2,n) if primefun(i)]

# 4.統計滿足條件的個數

# 先確定第乙個數a,再判斷n-a=b是否在列表中,即可判斷n=a+b

# [2,3,5,7] # 2 10-2=8

primecount = 0

# 遍歷n以內的所有質數

for item in primeli:

if (n - item) in primeli and item <= n - item:

primecount +=1

# 輸出個數

print(primecount)

執行結果:

3.字典的生成式

一般格式:

(1).將字典: ---->

一般方法:

# 工廠函式的方式,定義字典

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

print(d)

# 定義空字典,用來接收轉換key值後的值

new_d = {}

# 遍歷舊字典的key值

for i in d:

# d[i]:字典的key對應的value值

# print(d[i])

new_d[i.upper()] = d[i]

print('key轉化為大寫的字典:',new_d)

# 工廠函式的方式,定義字典

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

print(d)

# 字典生成式

(2).將字典: —>

一般方法:

# 工廠函式的方式,定義字典

d = dict(a=2,b=1,c=2,b=9,a=10)

print(d)

# 定義空字典

new_d={}

# 遍歷字典中的所有元素

for k,v in d.items():

low_k = k.lower()

# 合併

if low_k not in new_d:

new_d[low_k] = v

else:

new_d[low_k] += v

print(new_d)

d = dict(a=2,b=1,c=2,b=9,a=10)

print(d)

# key:val, get方法:獲取指定key對應的value值

Python之字典生成式

1.假設有20個學生,名字為westosx,學生分數在60 100之間,篩選出成績在90分以上的學生 import random stuinfo for i in range 20 name westos str i score random.randint 60,100 stuinfo name ...

python 列表生成式,字典生成式

生成乙個列表,列表元素分別為 1 1,2 2.9 9 import math li for i in range 1,10 print li print i i for i in range 1,10 print i i for i in range 1,10 if i 2 0 找出1 10之間的所...

Python 列表生成式 字典生成式

通過生成式可以更加簡潔地生成列表和字典 列表生成式 對比 直接生成資料後加入列表示例 user list list for i in range 10 2 print user list 通過列表生成式直接生成示例 user list x 2for x in range 10 print user ...