1.列表生成式
Python內置的一種極其強大的生成列表 list 的表達式。返回結果必須是列表。
格式:[ 變量表達式 for 變量 in 表達式 if 變量的判斷條件(結果爲True 或者False)]
#需求1:接收變量 k a b
常規寫法:
s = '51 5000 10000'
a = s.split()
print(a)
li = []
for item in s.split():
li.append(int(item))
print(li)
k,a,b = li
print(k,a,b)
列表生成式:
li = [int(item) for item in s.split()]
print(li)
k, a, b = li
print(k, a, b)
需求2:生成一個列表,列表的元素分別爲[11 22 9**9 ]
li = []
for i in range(1, 10):
li.append(i ** i)
print(li)
print([i ** i for i in range(1, 10)])
找出1~10之間的所有偶數
print([i for i in range(1,11) if i %2 == 0])
#s1 = 'ABC' s2='123' A1 A2 A3...C1 C2 C3
print([i + j for i in 'ABC' for j in '123'])
2.列表生成式變形之for循環
li = [
[1,2,3],
[4,5,6],
[7,8,9]
]
resli = []
for item1 in li: #[1,2,3] [4,5,6] [7,8,9]
for item2 in item1:
resli.append(item2)
print(resli)
print([item2 for item1 in li for item2 in item1])
from itertools import chain
print(list(chain(*li)))
#1.找出1~10之間的所有偶數,並且返回一個列表(包含以這個偶數爲半徑的園的面積)
方法1:
import math
li = []
for r in range(2, 11, 2):
square = math.pi r r
li.append(square)
print(li)
方法2 :
print([math.pi r r for r in range(2, 11, 2)])
方法3:
def square(r):
"""
求以r爲半徑的圓
:param r:半徑
:return:
"""
res = math.pi r r
return res
print([square(i) for i in range(2,11,2)])
#找出1~100之間的所有素數 (列表生成式 + 函數)
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)])
- 題目描述:
給定一個正整數,編寫程序計算有多少對質數的和等於輸入的這個正整數,並輸出結果。輸
入值小於1000。
如,輸入爲10, 程序應該輸出結果爲2。(共有兩對質數的和爲10,分別爲(5,5),(3,7))
#[2,3,5,7] - 輸入描述:
輸入包括一個整數n,(3 ≤ n < 1000) - 輸出描述:
輸出對數 - 示例1 :
輸入:
10
輸出:
2
#定義函數判斷是不是質數
def isprime(x):
for i in range(2,x):
if x%i==0 :
return False
else:
return True
#將比給定的正整數小的所有質數存在列表中
N = int(input('N:'))
small_prime = [ num for num in range(2,N) if isprime(num)]
#將可以相加等於該正整數的質數挑選出來
result = [ prime for prime in small_prime if N - prime in small_prime and prime <=N/2]
#輸出得到的指定素數列表的長度 就是統計出的素數對的數量
print(len(result))