天天看點

python之基礎篇(六)——表達式、語句和運算符

python的表達式、語句和運算符

  表達式:由一個或多個操作數以及0個或0個以上的運算符組成的序列就叫做表達式。

  語句:語句是以分号(;)結尾的單行代碼或者是語句塊中一系列的單行語句。

  python中常用的表達式操作符:

    算術運算:

      +、-

      *、/、//、%

    邏輯運算:

      or、and、not

    成員關系運算:

      in、not in

    對象執行個體測試:

      is、not is

    比較運算:

      <、>、<=、>=、==、!=

    位運算:

      |、&、^、<<、>>

    一進制運算:

      -x、+x、~x

    幂運算:

      **

    索引和分片:

      x[i]、x[i:j]、x[I:j:stride]

    調用:

      x(...)

    取屬性:

      x.attribute

    定義元組:(...)

    定義清單:[...]

    定義字典:{...}

    三元選擇表達式:x if y else z

    匿名函數表達式:lambda args: expression

    生成器函數發送協定表達式:yield x

  運算優先級從高到低排序:

    (...) 、[...]、{...}

    s[i]、s[i:j]:切片、索引

    s.attribute:取屬性

    s(...):函數調用

    +x、-x、~x:一進制操作符

    **:次方

    *、/、//、%:乘、除、整除、取模

    +、-:加、減

    <<、>>:位移

    &:按位與

    ^:按位異或

    |:按位或

    <、<=、>、>=、==、!=:比較操作符

    is、not is:對象執行個體測試

    in、not in:成員測試

    not:取反

    and:邏輯與

    or:邏輯或

    lambda:匿名函數

  python中的常用語句有以下這些:

    指派語句:a = 'abc'。python會在首次給變量指派時建立變量名并建立對象引用。變量名在引用前必須事先指派,否則将觸發異常。

    調用語句

    列印語句:print

    條件判斷語句:if/elif/else

    序列疊代語句:for/else

    普通循環語句:while/else

    占位符:pass

    中斷語句:break

    提前進入下一輪循環:continue

    定義函數:def

    傳回值語句:return

    生成器函數語句:yield

    命名空間:global

    觸發異常:raise

    子產品導入:import

    子產品屬性通路:from

    定義類:class

    捕捉異常:try/except/finally

    删除引用語句:del

    斷言語句(調試檢查):assert

    環境管理器:with/as

    指派語句:

      隐式指派:import、from、def、class、for、函數參數

      分解指派:當指派符号(=)的左側為元組或清單時,python會按照位置把右邊的對象和左邊的目标自左而右逐一進行配對。個數不同時會觸發異常,此時可以以切片的方式進行。

<code>In [</code><code>1</code><code>]: list1 </code><code>=</code> <code>(</code><code>'Sun'</code><code>,</code><code>'Mon'</code><code>,</code><code>'Tue'</code><code>)</code>

<code>In [</code><code>2</code><code>]: x,y,z </code><code>=</code> <code>list1</code>

<code>In [</code><code>3</code><code>]: </code><code>print</code> <code>x</code>

<code>Sun</code>

<code>In [</code><code>4</code><code>]: </code><code>print</code> <code>y</code>

<code>Mon</code>

<code>In [</code><code>5</code><code>]: </code><code>print</code> <code>z</code>

<code>Tue</code>

      多重目标指派:将多個變量名引用同一個對象

<code>       </code><code>num1 </code><code>=</code> <code>num2 </code><code>=</code> <code>num3 </code><code>=</code> <code>44</code>

      增強指派:+=、-=、*=、/=、//=、%=

python流程控制之if條件測試語句:

  python的比較操作:所有的python對象都支援比較操作

    可用于測試相等性、相對大小等;

    如果是複合對象,python會檢查其所有部分,包括自動周遊各級嵌套對象,直到可以得出最終結果

  測試操作符:

    "=="操作符測試值的相等性;

    "is"操作符測試對象的一緻性

  python中不同類型的比較方法:

    數字:通過相對大小進行比較

    字元串:按照字典(ASCII)次序逐字元進行比較

    清單和元組:自左至右比較各部分内容

    字典:對排序後的(鍵、值)清單進行比較

  python中真和假的含義:

    非零數字為真,否則為假;

    非空對象為真,否則為假;

    None則始終為假;

    比較和相等測試會遞歸地應用于資料結構中,傳回值為True或False

  組合條件測試:

    and

    or

    not:傳回True或False

    注意:python中,and和or運算會傳回真或假的對象,而不是True或False。對象在本質上不是"真",就是"假"。

    and和or是短路操作符

  三元表達式:

<code>expression1 </code><code>if</code> <code>boolean_expression </code><code>else</code> <code>expression2</code>

  例: a = x if y else z,這一句的意思是如果y條件成立,則a =x,否則a = z

python流程控制之while和for循環:

  循環機制及應用場景:

    while循環:

      用于編寫通用疊代結構(非周遊);

      頂端測試為真即會執行循環體,并會重複多次測試直到為假後執行循環後的其它語句

    for循環:

      一個通用的序列疊代器,用于周遊任何有序的序列對象内的元素;

      可用于字元串、元組、清單和其它的内置可疊代對象,以及通過類所建立的新對象

      文法格式:

<code>for</code> <code>expression </code><code>in</code> <code>iterable:</code>

<code>    </code><code>for_suite</code>

<code>else</code><code>:</code>

<code>    </code><code>else_suite</code>

      通常,expression或是一個單獨的變量,或是一個變量序列,一般以元組的形式給出。如果以元組或清單用于expression,則其中的每個資料項都會拆分到表達式的項,例如:

<code>In [</code><code>7</code><code>]: T</code><code>=</code><code>[(</code><code>1</code><code>,</code><code>2</code><code>),(</code><code>3</code><code>,</code><code>4</code><code>),(</code><code>5</code><code>,</code><code>6</code><code>),(</code><code>7</code><code>,</code><code>8</code><code>)]</code>

<code>In [</code><code>8</code><code>]: </code><code>for</code> <code>(a,b) </code><code>in</code> <code>T:</code>

<code>   </code><code>...:     </code><code>print</code> <code>a,b</code>

<code>   </code><code>...: </code>

<code>1</code> <code>2</code>

<code>3</code> <code>4</code>

<code>5</code> <code>6</code>

<code>7</code> <code>8</code>

      for循環比while循環執行速度快。

      python提供了兩個内置函數,用于在for循環中定制特殊的循環:

        range或xrange:

          range:一次性地傳回連續的整數清單

          xrange:一次産生一個資料元素,相較于range更節約空間

        zip:傳回并行的元素元組的清單,常用于在for循環中周遊數個序列

          取得一個或多個序列為參數,将給定序列中的并排的元素配成元組,傳回這些元組的清單。當參數長度不同時,zip會以最短序列的長度為準。

          zip還可用于構造字典

    python也提供了一些能夠進行隐性疊代的工具:

     in成員關系測試;

      清單解析;

      map、reduce和filter函數

  break:跳出最内層的循環

  continue:跳到所處的最近層循環的開始處,也就是提前進入下一輪循環,continue後面的語句将不會執行

  else代碼塊:循環正常終止才會執行else代碼塊,如果循環終止是由break跳出導緻的,則else代碼塊不會執行

  pass:點位語句。當文法需要語句但還沒有任何實用語句可寫時使用

while循環練習

  練習1:逐一顯示指定清單中的所有元素

  練習2:求100以内所有偶數之和

  練習3:逐一顯示指定字典的所有鍵,并于顯示結束後說明總鍵數

  練習4:建立一個包含了100以内所有奇數的清單

  練習5:逆序逐一顯示一個清單的所有元素

  練習6:清單l1=[0,1,2,3,4,5,6],清單l2=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],以第一個清單中的元素為鍵,以第二個清單中的元素為值生成字典d1

for循環練習

  練習1:逐一分開顯示指定字典d1中的所有元素,類似如下

    k1 v1

    k2 v2

    ...

  練習2:逐一顯示清單l1=['Sun','Mon','Tue','Wed','Thu','Fri','Sat']中的索引為奇數的元素

  練習3:将屬于清單l1=['Sun','Mon','Tue','Wed','Thu','Fri','Sat'],但不屬于清單l2=['Sun','Mon','Tue','Thu','Sat']的所有元素定義為一個新清單l3

  練習4:已知清單namelist=['stu1','stu2','stu3','stu4','stu5','stu6','stu7'],删除清單removelist=['stu3','stu7','stu9']。請将屬于removelist中的每個元素從namelist中移除(屬于removelist,但不屬于namelist的忽略即可)

本文轉自 忘情OK  51CTO部落格,原文連結:http://blog.51cto.com/itchentao/1887641,如需轉載請自行聯系原作者