pythonlist嵌套list
A. python遍歷多重嵌套列表
B. python 將兩個list合並成為一個嵌套的list
除了直接相加(生成新的list),還有兩種方法(修改其中一個list):
用list的extend方法,L1.extend(L2),該方法將參數L2的全部元素添加到L1的尾部,例如:
1
2
3
4
5
>>> L1 = [1, 2, 3, 4, 5]
>>> L2 = [20, 30, 40]
>>> L1.extend(L2)
>>> L1
[1, 2, 3, 4, 5, 20, 30, 40]
用切片(slice)操作,L1[len(L1):len(L1)] = L2和上面的方法等價,例如:
1
2
3
4
5
6
>>> L1 = [1, 2, 3, 4, 5]
>>> L2 = [20, 30, 40]
>>> L1[len(L1):len(L1)] = L2
>>>
>>> L1
[1, 2, 3, 4, 5, 20, 30, 40]
但切片方法用起來更靈活,可以插入到頭部,或其他任意部位,例如:
加到開頭:
1
2
3
4
5
>>> L1 = [1, 2, 3, 4, 5]
>>> L2 = [20, 30, 40]
>>> L1[0:0] = L2
>>> L1
[20, 30, 40, 1, 2, 3, 4, 5]
加到中間:
1
2
3
4
5
6
>>> L1 = [1, 2, 3, 4, 5]
>>> L2 = [20, 30, 40]
>>>
>>> L1[1:1] = L2
>>> L1
[1, 20, 30, 40, 2, 3, 4, 5]
參考
1.《python libarary referece》5.6.4. Mutable Sequence Types:
(oschina文檔鏡像地址)http://tool.oschina.net/uploads/apidocs/python2.7.3/library/stdtypes.html#mutable-sequence-types
C. python 嵌套list讀取
a=[['1','2','3'],['5','6','7']]
a[0]#['1','2','3']
a[0][1]#'2'
D. python 解嵌套的list
importitertools
lst_all=[['A','Blue'],['A','Green'],['A','Yellow'],['B','Red'],['C','Red'],['C','White']]
collector=[]
fork,lstgroupinitertools.groupby(sorted(lst_all),lambdax:x[0]):
collector.append([k,','.join([c[1]forcinlstgroup])])
printcollector
E. 如何把嵌套的python list轉成一個一維的python list
著作權歸作者所有。
商業轉載請聯系作者獲得授權,非商業轉載請註明出處。
作者:淺綠
鏈接:https://www.hu.com/question/27010691/answer/34893329
來源:知乎
#!/usr/bin/python#encoding=utf-8#詳細可參考pythoncookbook第二版4.6節defis_list_or_tuple(x):
returnisinstance(x,(list,tuple))#(plainandUnicode)#一個斷定:展開任意可以迭代的對象,除了字元串(plain和unicode)#,-initer#onthatobject:.Toidentify#whetheranobjectisstring-like,#basestring,sinceisinstance(obj,basestring)#subclassofbasestring—thatis,anystring-liketype#判斷是否可以對象可以迭代,排除字元串defnonstring_iterator(obj):
try:iter(obj)
exceptTypeError:returnFalse
else:returnnotisinstance(obj,basestring)#展開一個嵌套序列defflatten(sequence,to_expend=is_list_or_tuple):
foriteminsequence:
ifto_expend(item):
forsubiteminflatten(item,to_expend):
yieldsubitem
else:
yielditem#非遞歸版本#關鍵點是:迭代器可以保持中斷狀態,記錄迭代狀態#例如:it=iter([1,2,3,4])foriinit:
printi
breakforiinit:
printidefnonrecursive_flatter(sequence,to_expend=is_list_or_tuple):
#包含多個迭代器的列表
iterators=[iter(sequence)]
whileiterators:
foriteminiterators[-1]:
ifto_expend(item):
iterators.append(iter(item))
break
else:
yielditem
else:
iterators.pop()
if__name__=='__main__':
my_list=['1abc',2,[3,[3,4],'a',[[]],[3,[3,4]]]]
foriinflatten(my_list,nonstring_iterator):
printi,
print''
foriinnonrecursive_flatter(my_list,nonstring_iterator):
printi,
F. list可以嵌套嗎 python
可以
>>> a=[]
>>> a.append(a)
>>> a
[[...]]
G. python嵌套列表組合成一個新的嵌套列表
方法一,在list下操作,使用extend函數
foriinrange(len(a)):
a[i].extend(b[i])
方法二,將list轉成ndarray,然後使用矩陣的粘合方法
importnumpyasnp
a_new=np.arrray(a)
b_new=np.array(b)
new_list=np.concatenate((a_new,b_new),axis=1)#axis=0表示行,axis=1,表示列
H. Python,怎麼不寫循環,把的list每個嵌套拆開
不用迭代怎麼寫?調用這版個模權塊
import itertools
a = [[0, 1, 2], [3, 4, 5], [6, 7, 8], [9]]
a = list(itertools.chain.from_iterable(a))
print(a)
I. python 嵌套list
defiseven(l):
foriinl:
ifi%2:
returnFalse
returnTrue
defonly_evens(ll):
r=[]
foriinll:
ifiseven(i):
r.append(i)
returnr
printonly_evens([[1,2,4],[4,0,6],[22,4,3],[2]])
Python 2.7 執行結果抄
[[4, 0, 6], [2]]
其中 iseven 函數判斷 list 是不是都是偶數