python資料類型-----列表,python資料類型-----

來源:互聯網
上載者:User

python資料類型-----列表,python資料類型-----

今天來總結下python3.4版本列表的一些操作方法。

 

列表(list):  

  1、列表就像一個線性容器,但是比C++的 lis t擴充多得多,列表裡的元素可以是相同類型,也可以包含各種類型,比如列表裡嵌套另一個列表

  2、list的索引是也是從0開始,但也可以從後訪問,L1[-1] 表示L1中的最後一個元素對列表可以進行切片

  3、列表可以做加法,做乘法,字串也可以看做一個字元的列表

  4、in語句,判斷一個對象是否在一個字串/列表/元組裡
  5、not 語句表示對後面的否定
  6、len 可以檢測字串/列表/元祖/字典的元素個數
  7、max 可以返回最大元素,min 返回最小元素

  8、len(List)返回List的長度
  del list[i]刪除列表list中指定的第i+1個變數
  9、切片:切片指的是抽取序列的一部分,其形式為:list[start:end:step]。其抽取的規則是:一般預設的步長為1,但也可自訂。 切片的操作類似於對函數的調用,傳回值一個新的列表,

  切片 L1[ x : y : z ] 是半開閉區間(z通常不用寫),如L1[1:3] 返回的是一個從 L1[1] 開始到 L1[2] 結束的列表,不包含L1[3],x 不寫表示從頭開始,y 不寫表示直到列表結束,

  z 用於表示步長, 預設是1, 可以認為是在這個區間裡每 z 個元素取一個(取第一個),可以是負數,表示從後到前遍曆 

 

 

list 的方法:

1、append(x)追加到鏈尾
2、clear()清空列表元素
3、copy()列表的淺拷貝
4、extend(L)追加一個列表,等價於+=
5、insert(i,x)在位置i插入x,其餘元素向後推,如果i大於列表長度,就在最後添加,如果i小於0,就在最開始添加
6、remove(x)刪除第一個值為x的元素,如果不存在會拋出異常
7、reverse()反轉序列
8、pop([i])刪除位元置 i 的元素並將它返回,預設可以不寫 i ,刪除最後一個元素,不存在會出錯素。pop 會做兩件事:刪除 list 的最後一個元素,然後返回刪除元素的值。
9、index(x)返回x在列表中第一次出現的位置,不存在則拋出異常
10、count(x)返回x出現的次數
11、sort(key=None, reverse=False) 將原列表排序,返回None,有兩個選擇性參數,key 和 reverse,預設為升序排列

 

 

>>> L1 = [1,2,3,4,5,6]
>>> L1[1:3]
[2, 3]
>>> L1[:3]
[1, 2, 3]
>>> L1[1:]
[2, 3, 4, 5, 6]
>>> L1[-3:-1]
[4, 5]
>>> L2 = L1[:]
>>> L2
[1, 2, 3, 4, 5, 6]
>>> L1[::2]
[1, 3, 5]
>>> L1[::-1]
[6, 5, 4, 3, 2, 1]

 

>>> L1 = [1,2]
>>> L2 = [3,4]
>>> L1 + L2
[1, 2, 3, 4]
>>> 5 * L1
[1, 2, 1, 2, 1, 2, 1, 2, 1, 2]

>>> L1
[1, 2, 3, 4, 2]
>>> 3 in L1
True
>>> 5 in L1
False
>>> 3 not in L1
False
>>> 5 not in L1
True
>>> len(L1)
5
>>> max(L1)
4
>>> min(L1)
1

>>> #賦值
>>> L1[1] = 5
>>> L1
[1, 5, 3, 4, 2]
>>> #刪除
>>> del L1[1]
>>> L1
[1, 3, 4, 2]
>>> #分區賦值
>>> L1[2:] = [6,7,8]
>>> L1
[1, 3, 6, 7, 8]
>>> L1[1:3] = []
>>> L1
[1, 7, 8]

 

>>> L1
[8, 7, 2, 1]
>>> L1.sort()
>>> L1
[1, 2, 7, 8]
>>> L1.sort(reverse = True)
>>> L1
[8, 7, 2, 1]
>>> L1 = ['a','ccc','abcd','bc','cd','abc']
>>> L1.sort(key = len)
>>> L1
['a', 'bc', 'cd', 'ccc', 'abc', 'abcd']

 

python中對list去重的多種方法
  今天遇到一個問題,在同事隨意的提示下,用了 itertools.groupby 這個函數。不過這個東西最終還是沒用上。

  問題就是對一個list中的id進行去重,去重之後要保證順序不變。

1、直觀方法
  最簡單的思路就是:
  >>>ids = [1,2,3,3,4,2,3,4,5,6,1]
  >>>news_ids = []
  >>>for id in ids:
      if id not in news_ids:
          news_ids.append(id)
  >>>print news_ids
  這樣也可行,但是看起來不夠爽。

2、用set
  另外一個解決方案就是用set和sort:

  >>>ids = [1,4,3,3,4,2,3,4,5,6,1]
  >>>news_ids = list(set(ids))
  >>>news_ids.sort(key=ids.index)

  >>>new_ids

  [1, 4, 3, 2, 5, 6]

3、使用itertools.grouby
  文章一開始就提到itertools.grouby, 如果不考慮列表順序的話可用這個:
  >>>ids = [1,4,3,3,4,2,3,4,5,6,1]
  >>>ids.sort()
  >>>it = itertools.groupby(ids)
  >>>for k, g in it:
      print k
  關於itertools.groupby的原理可以看這裡:http://docs.python.org/2/library/itertools.html#itertools.groupby

4、用reduce
  >>>ids = [1,4,3,3,4,2,3,4,5,6,1]
  >>>func = lambda x,y:x if y in x else x + [y]
  >>>reduce(func, [[], ] + ids)
  [1, 4, 3, 2, 5, 6]
  其中的 lambda x,y:x if y in x else x + [y] 等價於 lambda x,y: y in x and x or x+[y]
  思路其實就是先把ids變為[[], 1,4,3,......] ,然後在利用reduce的特性。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.