python(生成式)

前言

指在通過一個表達式完成一系列操作

生成式示例

  • [expression for i in seq if…]

打印1-10之間偶數的平方
print([i ** 2 for i in range(1,11) if i %2 == 0])

練習(騰訊質數對)

(2018-騰訊-在線編程題)

  • 題目描述:
    給定一個正整數,編寫程序計算有多少對質數的和等於輸入的這個正整數,並輸出結果。輸入值小於1000。
    如,輸入爲10, 程序應該輸出結果爲2。(共有兩對質數的和爲10,分別爲(5,5),(3,7))
    #[2,3,5,7]

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

  • 輸出描述:輸出對數

  • 示例1 :
    輸入:10
    輸出:2

      num = int(input())
      
      def isPrime(num):
          for i in range(2,num):
              if num % i == 0:
                  return False
          else:
              return True
      
      primeli = [i for i in range(2,num) if isPrime(i)]
      print(primeli)
      
      primecount = 0
      
      #[2,3,5,7]
      for item in primeli:
          if (num - item) in primeli and item <= num - item:
              primecount += 1
      
      print(primecount)
    

練習(20個學生求90分以上人數)

需求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] = score
print(stuInfo)
print({name: score for name,score in stuInfo.items() if score > 90})

2.key --> upper

d = dict(a=1,b=2)
 print(d)
 new_d = {}
 for i in d:
     new_d[i.upper()] = d[i]
 print(new_d)

生成式:

print({k.upper():v for k,v in d.items()})		

需求3:大小寫key值合併,統一以小寫輸出

d = dict(a=2, b=1, c=2, B=9, A=10)
輸出{'a': 12, 'b': 10, 'c': 2}
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)

生成式:

print({k.lower(): d.get(k.lower(), 0) + d.get(k.upper(), 0) for k in d})

後記

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章