<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之旅 廣告
                ## 問題 怎樣在一個序列上面保持元素順序的同時消除重復的值? ## 解決方案 如果序列上的值都是hashable類型,那么可以很簡單的利用集合或者生成器來解決這個問題。比如: def dedupe(items): seen = set() for item in items: if item not in seen: yield item seen.add(item) 下面是使用上述函數的例子: >>> a = [1, 5, 2, 1, 9, 1, 5, 10] >>> list(dedupe(a)) [1, 5, 2, 9, 10] >>> 這個方法僅僅在序列中元素為hashable的時候才管用。如果你想消除元素不可哈希(比如dict類型)的序列中重復元素的話,你需要將上述代碼稍微改變一下,就像這樣: def dedupe(items, key=None): seen = set() for item in items: val = item if key is None else key(item) if val not in seen: yield item seen.add(val) 這里的key參數指定了一個函數,將序列元素轉換成hashable類型。下面是它的用法示例: >>> a = [ {'x':1, 'y':2}, {'x':1, 'y':3}, {'x':1, 'y':2}, {'x':2, 'y':4}] >>> list(dedupe(a, key=lambda d: (d['x'],d['y']))) [{'x': 1, 'y': 2}, {'x': 1, 'y': 3}, {'x': 2, 'y': 4}] >>> list(dedupe(a, key=lambda d: d['x'])) [{'x': 1, 'y': 2}, {'x': 2, 'y': 4}] >>> 如果你想基于單個字段、屬性或者某個更大的數據結構來消除重復元素,第二種方案同樣可以勝任。 ## 討論 如果你僅僅就是想消除重復元素,通常可以簡單的構造一個集合。比如: >>> a [1, 5, 2, 1, 9, 1, 5, 10] >>> set(a) {1, 2, 10, 5, 9} >>> 然而,這種方法不能維護元素的順序,生成的結果中的元素位置被打亂。而上面的方法可以避免這種情況。 在本節中我們使用了生成器函數讓我們的函數更加通用,不僅僅是局限于列表處理。比如,如果如果你想讀取一個文件,消除重復行,你可以很容易像這樣做: with open(somefile,'r') as f: for line in dedupe(f): ... 上述key函數參數模仿了sorted(),min()和max()等內置函數的相似功能。可以參考1.8和1.13小節了解更多。
                  <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>

                              哎呀哎呀视频在线观看