Python入門之列表生成式 字典生成式

2021-09-25 04:44:59 字數 3496 閱讀 6338

1. 非列表生成式

2.列表生成式

s = '51 5000 10000'

li = [int(item) for item in s.split()]

print(li)

練習1:輸出[1**1 2**2 .. 9**9]

方法一:

li = 

for i in range(1,10):

print(li)

方法二:列表生成器

print([i ** i for i in range(1,10)])
練習2:找出1——10之間所有偶數,並且返回乙個列表(包含以這個偶數為半徑的圓的面積)

import math

print([math.pi * r * r for r in range(2,11,2)])

練習3:找出1~n之間所有的質數

def isprime(num):

for i in range(2,num):

if num % i == 0:

return false

else:

return true

print([i for i in range(2,101) if isprime(i)])

練習4:給定乙個正整數,編寫程式計算有多少對質數的和等於輸入的這個正整數,並輸出結果。輸入值小於1000。如,輸入為10, 程式應該輸出結果為2。(共有兩對質數的和為10,分別為(5,5),(3,7) [2,3,5,7]

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

輸出描述:輸出對數

示例1 : 輸入:25   輸出:1(2+23)

二、列表生成式變形

1. s1 = 'abc' s2='123',輸出結果為a1 a2 a3 ... c1 c2 c3

print([i + j for i in 'abc' for j in '123'])
2. li  = [ [1,2,3], [4,5,6],[7,8,9] ]將該列表中的元素列印輸入為如下格式[ 1,2,3,4,5,6,7,8,9]

li = [

[1,2,3],

[4,5,6],

[7,8,9]

]#方法一:

resultli =

for item1 in li:

for item2 in item1:

print(resultli)

#方法二:

1.假設有20個學生,名字為westosx,學生分數在60-100之間,篩選出成績在90分以上的學生

方法1:

import random

stuinfo = {}

for i in range(20):

name = 'westos' + str(i)

score = random.randint(60,100)

stuinfo[name] = score

print(stuinfo)

highscore = {}

for name,score in stuinfo.items():

if score > 90:

highscore[name] = score

print(highscore)

方法2:使用字典生成器

2. 將所有的key值變為小寫

例如:d = dict(a=1,b=2,c=2,b=9,a=10),將所有key變為小寫,並合併相同key的鍵值(a=11,b=11,c=2)

方法1:

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

print(d)

new_d = {}

for i in d:

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

print(new_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)

方法二:字典生成式

Python之列表生成式

列表生成式即list comprehensions,是python內建的非常簡單卻強大的可以用來建立list的生成式。1 生成list 1,2,3,4,5,6,7,8,9,10 print list range 1,11 2 生成 1x1,2x2,3x3,10x10 方法一 用迴圈 l for x ...

python之列表生成式

生成乙個 1 1,2 2,3 3,4 4,10 10 的列表 方法一l1 for i in range 1,11 print l1 2,4,6,8,10,12,14,16,18,20 方法二l2 x x for x in range 1,11 print l2 2,4,6,8,10,12,14,16...

python之列表生成式

一 生成列表 要生成list 1,2,3,4,5,6,7,8,9,10 我們可以用range 1,11 range 1,11 1,2,3,4,5,6,7,8,9,10 但如果要生成 1x1,2x2,3x3,10x10 怎麼做?方法一是 迴圈 l for x in range 1,11 但是迴圈太繁瑣...