<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ### 6.3.1 集合 Python 提供了集合類型 set,用于表示大量數據的無序集合體。集合可以由各種數據組 成,數據之間沒有次序,并且互不相同。可見,Python 集合基本上就是數學中所說的集合①。 集合類型的值有兩種創建方式:一種是用一對花括號將多個用逗號分隔的數據括起來; 另一種是調用函數 set(),此函數可以將字符串、列表、元組等類型的數據轉換成集合類型的 數據。不管用哪種方式創建集合值,在 Python 內部都是以 set([...])的形式表示的。注意,空 集只能用 set()來創建,而不能用字面值{}表示,因為 Python 將{}用于表示空字典(見 6.3.2 節)。 下面的會話過程演示了集合類型的值的創建。注意,集合中是不能有相同元素的,因此Python 在創建集合值的時候會自動刪除掉重復的數據。 > ① 當然 Python 集合并不完全等同于數學中的集合,例如數學中的集合可能是無窮集。 ``` >>> {1,2,3} set([1, 2, 3]) >>> s = {1,1,2,2,2,3,3} >>> s set([1, 2, 3]) >>> set('set') set(['s', 'e', 't']) >>> set('sets') set(['s', 'e', 't']) >>> set([1,1,1,2,1]) set([1, 2]) >>> set((1,2,1,1,2,3,4)) set([1, 2, 3, 4]) >>> set() set([]) >>> type(set()) <type 'set'> >>> type({}) <type 'dict'> ``` 集合類型支持多種運算,學過中學數學的讀者很容易理解這些運算的含義。我們將常用 的集合運算列在表 6.6 中。 | 運算 | 含義 | | --- | --- | | x in &lt;集合&gt; | 檢測 x 是否屬于&lt;集合&gt;,返回 True 或 False | | s1 &#124; s2 | 并集 | | s1 & s2 | 交集 | | s1 – s2 | 差集 | | s1 ^ s2 | 對稱差 | | s1 &lt;= s2 | 檢測 s1 是否 s2 的子集 | | s1 &lt; s2 | 檢測 s1 是否 s2 的真子集 | | s1 &gt;= s2 | 檢測 s1 是否 s2 的超集 | | s1 &gt; s2 | 檢測 s1 是否 s2 的真超集 | | s1 &#124;= s2 | 將 s2 的元素并入 s1 中 | | len(s) | s 中的元素個數 | 圖 6.6 集合運算 下面是集合運算的例子: ``` >>> s1 = {1,2,3,4,5} >>> s2 = {2,4,6,8} >>> 6 in s1 False >>> 6 in s2 True >>> s1 | s2 set([1, 2, 3, 4, 5, 6, 8]) >>> s1 & s2 set([2, 4]) >>> s1 - s2 set([1, 3, 5]) >>> s1 |= s2 >>> s1 set([1, 2, 3, 4, 5, 6, 8]) >>> len(s2) 4 ``` 和序列一樣,集合與 for 循環語句結合使用,可實現對集合中每個元素的遍歷。例如, 接著上面的例子繼續執行語句: ``` >>> for x in s2: print x, 8 2 4 6 ``` Python 集合是可修改的數據類型,例如上面例子中修改了集合 s1 的值。但是,Python 集合中的元素必須是不可修改的!因此,集合的元素不能是列表、字典等,只能是數值、字 符串、元組之類。同樣,集合的元素不能是集合,因為集合是可修改的。然而,Python 另 外提供了 frozenset()函數,可用來創建不可修改的集合,這種集合可以作為另一個集合的元 素。下面的語句展示了 set 和 frozenset 的區別: ``` >>> a = set(['hi','there']) >>> b = set([a,3]) Traceback (most recent call last): File "&lt;pyshell#74&gt;", line 1, in &lt;module&gt; b = set([a,3]) TypeError: unhashable type: 'set' >>> a = frozenset(['hi','there']) >>> b = set([a,3]) >>> b set([3, frozenset(['there', 'hi'])]) ``` Python 以面向對象方式實現集合類型,集合對象的方法如表 6.7 所示。 | 方法 | 含義 | | --- | --- | | s1.union(s2) | 即 s1 &#124; s2 | | s1.intersection(s2) | 即 s1 & s2 | | s1.difference(s2) | 即 s1 – s2 | | s1.symmetric_difference(s2) | 即 s1 ^ s2 | | s1.issubset(s2) | 即 s1 &lt;= s2 | | s1.issuperset(s2) | 即 s1 &gt;= s2 | | s1.update(s2) | s1 &#124;= s2 | | s.add(x) | 向 s 中增加元素 x | | s.remove(x) | 從 s 中刪除元素 x(無 x 則出錯) | | s.discard(x) | 從 s 中刪除元素 x(無 x 也不出錯) | | s.pop() | 從 s 中刪除并返回任一元素 | | s.clear() | 從 s 中刪除所有元素 | | s.copy() | 復制 s | 表 6.7 集合對象的方法 接著前面的例子,下面通過集合對象方法的調用來處理集合數據: ``` >>> s2.union([1,2,3]) set([1, 2, 3, 4, 6, 8]) >>> s2.intersection((1,2,3,4)) set([2, 4]) >>> set([2,4]).issubset(s2) True >>> s2.issuperset(set([2,4])) True >>> s2.add(10) >>> s2 set([8, 2, 4, 10, 6]) >>> print s2.pop() 8 >>> s2 set([2, 4, 10, 6]) ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看