pythonlist相等
① 如何對list進行python
對List進行排序,Python提供了兩個方法
---sort----
方法1.用List的內建函數list.sort進行排序
list.sort(func=None, key=None, reverse=False)
方法2.用序列類型函數sorted(list)進行排序(從2.4開始)
Python代碼
>>> list = [2,5,1]
>>> list
[2, 5, 1]
>>> sorted(list)
[1, 2, 5]
>>> list
[2, 5, 1]
>>> list.sort()
>>> list
[1, 2, 5]
sorted(list)返回一個對象,可以用作表達式。原來的list不變,生成一個新的排好序的list對象。
list.sort() 不會返回對象,改變原有的list。
---reverse---
這兩種方法使用起來差不多,以第一種為例進行講解:
從Python2.4開始,sort方法有了三個可選的參數,Python Library Reference里是這樣描述的
cmp:cmp specifies a custom comparison function of two arguments
(iterable elements) which should return a negative, zero or positive
number depending on whether the first argument is considered smaller
than, equal to, or larger than the second argument:
"cmp=lambda x,y: cmp(x.lower(), y.lower())"
key:key specifies a function of one argument that is used to extract a comparison key from each list element: "key=str.lower"
reverse:reverse is a boolean value. If set to True, then the list
elements are sorted as if each comparison were reversed.In general, the
key and reverse conversion processes are much faster than specifying an
equivalent cmp function. This is because cmp is called multiple times
for each list element while key and reverse touch each element only
once.
以下是sort的具體實例。
實例1:
>>>L = [2,3,1,4]
>>>L.sort()
>>>L
>>>[1,2,3,4]
實例2:
>>>L = [2,3,1,4]
>>>L.sort(reverse=True)
>>>L
>>>[4,3,2,1]
實例3:對第二個關鍵字排序
>>>L = [('b',6),('a',1),('c',3),('d',4)]
>>>L.sort(lambda x,y:cmp(x[1],y[1]))
>>>L
>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]
實例4:
對第二個關鍵字排序
>>>L = [('b',6),('a',1),('c',3),('d',4)]
>>>L.sort(key=lambda x:x[1])
>>>L
>>>[('a', 1), ('c', 3), ('d', 4), ('b', 6)]
實例5:
對第二個關鍵字排序
>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>import operator
>>>L.sort(key=operator.itemgetter(1))
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
實例6:(DSU方法:Decorate-Sort-Undercorate)
>>>L = [('b',2),('a',1),('c',3),('d',4)]
>>>A = [(x[1],i,x) for i,x in enumerate(L)] #i can confirm the stable sort
>>>A.sort()
>>>L = [s[2] for s in A]
>>>L
>>>[('a', 1), ('b', 2), ('c', 3), ('d', 4)]
以上給出了6中對List排序的方法,其中實例3.4.5.6能起到對以List item中的某一項
為比較關鍵字進行排序.
效率比較:
cmp < DSU < key
通過實驗比較,方法3比方法6要慢,方法6比方法4要慢,方法4和方法5基本相當
多關鍵字比較排序:
實例7:
>>>L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=lambda x:x[1])
>>> L
>>>[('d', 2), ('c', 2), ('b', 3), ('a', 4)]
我們看到,此時排序過的L是僅僅按照第二個關鍵字來排的,
如果我們想用第二個關鍵字排過序後再用第一個關鍵字進行排序呢?有兩種方法
實例8:
>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=lambda x:(x[1],x[0]))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
實例9:
>>> L = [('d',2),('a',4),('b',3),('c',2)]
>>> L.sort(key=operator.itemgetter(1,0))
>>> L
>>>[('c', 2), ('d', 2), ('b', 3), ('a', 4)]
為什麼實例8能夠工作呢?原因在於tuple是的比較從左到右比較的,比較完第一個,如果
相等,比較第二個
② python 怎麼判斷兩個list 一樣
# 如果是簡單對象的話,使用集合list1 = [1,3,5,4,3,5,7]list2 = [2,3,4,5,3,4,5,6,7]print set(list1) & set(list2) # set([3, 4, 5, 7])# 復雜對象的話這種方法不適用, 需要自己寫
③ python 如何判斷兩個list是否相等
list1=[1,2,3,4]
list2=[2,3,4]
if list1 ==list2:
print('相同')
else:
print('不相等')
④ python list 元素為什麼相同
python list 元素為什麼相同
可以對第二個list的元素進行遍歷,檢查是否出現在第二個list當中,如果使用表理解,可以使用一行代碼完成任務。
list1 = [1,2,3,4,5]
list2 = [4,5,6,7,8]
print [l for l in list1 if l in list2]
# [4,5]
如果每一個列表中均沒有重復的元素,那麼還有另外一種更好的辦法。首先把兩個list轉換成set,然後對兩個set取交集,即可得到兩個list的重復元素。
set1 = set(list1)
set2 = set(list2)
print set1 & set 2
# {4,5}
⑤ python兩個list元素的相同項
list1 = [1,2,3] list2=[2,3,4]set1 = set(list1)set2 = set(list2)print(set1&set2){2, 3}print(set1^set2){1, 4}
⑥ Python list 多個元素的列表,如何進行比較呢
從第一個元素順序開始比較,如果相等,則繼續
返回第一個不相等元素比較的結果
如果所有元素比較均相等,則長的列表大,一樣長則兩列表相等
⑦ python 判斷列表內容與字元串是否相等(中文編碼問題)
你用的應該不是python3吧,麻煩你告訴我你用的python的版本
不好意思,不過我要說,你說
s.attrib.get('dirname')==dirname
怎麼著也檢測不出來 是什麼意思,是指這個判斷總是為False嗎?
還有,冒昧的問一下,
你前提那裡
第二行,
dirname=''.join(list_full_filename[len_input_dir]) 內容等於「文件1」
意思是說dirname變數等於「文件1」嗎?
第三行,
s.attrib.get('dirname')=「文件1」 內容也等於「文件1」
意思是s.attrib.get('dirname')的值是「文件1」是吧??
不過你這里的s是什麼呢????
要我說,從下面兩句
print isinstance(s.attrib.get('dirname'),str) true
print isinstance(dirname,str) false
就可以知道:
s.attrib.get('dirname')==dirname
必然返回False的。應為他們的類型甚至都不一樣。
你可以這樣用:
unicode(s.attrib.get('dirname'))==dirname
不過先請告訴我你用的python的版本吧。不同版本的python對字元串的處理方法不一樣的。
我知道我肯能還沒回答的很好,不過由於你問的問題我不是太理解,所以請你在追問,把問題描述的清楚一些。
⑧ python兩個長度相等的list元素合並
1.簡介:Python 中 list 的合並操作
2.所需工具/原料: python2.7
3.方法:
l1=['L','O','L']
l2=['lu','a','lu']
#將兩個list合二為一
l1+l2(或l1.extend(l2))
#運行結果:
['L','O','L','lu','a','lu']
#將兩個list捆綁
zip(l1,l2)
#運行結果:
[('L','lu'),('O','a'),('L','lu')]
#將兩個list合為一個dict
dict(zip(l1,l2))
#運行結果:
{'L':'lu','O':'a'}
4.注意事項: Python中的很多函數方法都是可以'跨界'活用的,如果你只從list的函數方法中找解,這個問題就十分棘手
⑨ python 尋找兩個list 相同的元素
list1= ['0+1998', '1+1998', '2+1998', '3+1998']
list2 = ['1+1998', '2+1998']
list3 = [1 if i in list2 else 0 for i in list1]
print(list3)