Python基礎:條件與循環


條件語句

  除了 boolean 類型的數據,條件判斷最好是顯性的
  
if i != 0:
...

  而不是只寫出變量名:

if i:
...

For循環與While循環

  • 通常來說,如果你只是遍歷一個已知的集合,找出滿足條件的元素,並進行相應的操作,那么使用 for 循環更加簡潔。
  但如果你需要在滿足某個條件前,不停地重復某些操作,並且沒有特定的集合需要去遍歷,那么一般則會使用 while 循環。
  • range() 函數是直接由 C 語言寫的,調用它速度非常快。
  而 while 循環中的“i += 1”這個操作,得通過 Python 的解釋器間接調用底層的 C 語言;並且這個簡單的操作,又涉及到了對象的創建和刪除(因為 i 是整型,是 immutable,i += 1 相當於 i = new int(i + 1))。
  所以,顯然,for 循環的效率更勝一籌。

條件與循環的復用

  例:給定兩個列表attributes和values,要求針對 values 中每一組子列表 value,輸出其和 attributes 中的鍵對應后的字典組成的列表:
[{'name': 'jason', 'dob': '2000-01-01', 'gender': 'male'}, 
{'name': 'mike', 'dob': '1999-01-01', 'gender': 'male'}, 
{'name': 'nancy', 'dob': '2001-02-01', 'gender': 'female'}]

  多行代碼:

import copy
attributes = ['name', 'dob', 'gender']
values = [
    ['jason', '2000-01-01', 'male'], 
    ['mike', '1999-01-01', 'male'],
    ['nancy', '2001-02-01', 'female']
]

l_except = []
d = {}
for value in values:
    #方法一
    #for index,v in enumerate(value):
        #d[attributes[index]] = v
    #方法二
    d = dict(zip(attributes,value))

    l_except.append(d)
#d.clear() #值得注意的是list,dict是傳遞引用,如果調用此句下句就會為[{},{},{}]
           #可以用copy.deepcopy傳遞學拷貝對象l_except.append(copy.deepcopy(d))
print(l_except)

  一行代碼處理:

l_except = [{arrt: v[index] for index, arrt in enumerate(attributes)}for v in values]
print(l_except)
# or
l_except = [dict(zip(attributes,v)) for v in values]
print(l_except)

參考:

  極客時間《Python核心技術與實戰》

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM