[英]Sum of last 3 elements for x elements in a list as a new list [python 3]
[英]Create new list containing list x but not elements in list y that are the same as in list x - python
我知道這個問題之前已經討論過,而且我知道這是一個新手和簡單的問題,但是由於某些原因,我無法將其束縛在執行此操作所需的代碼周圍。 這是我需要的一個實際示例:
可以說我有一個tumblr帳戶,我關注了5個人,其中3個人關注了我。
iFollow = [Tom, Richard, Bob, Samantha, Kat]
followsMe = [Samantha, Kat, Bob]
現在,我想取消關注我追隨的人,但是不要跟着我回來。 因此,在此示例中,我想取消關注Tom和Richard ,因為即使我關注他們,他們也沒有關注我。 我想創建一個列表:
unfollowThese = [Tom, Richard]
我一生無法弄清楚該如何做。 我知道有一個相交,找到了共同的元素,它將輸出“ Bob”,似乎我想要相反,我希望從我要制作的新列表中刪除兩個列表中的共同元素。
IE瀏覽器,我希望將iFollow和FollowMe中常見的元素從unfollowThese中刪除,因為我不想取消關注我的關注者。
謝謝。
ps:如果您能想到一個更好的標題,請進行更改,我想不出什么名字了。
最簡單的方法是使用設置差異 :
unfollowThese = set(iFollow).difference(followsMe)
如果followsMe
很大,這也應該比列表理解要快-這是線性的平均時間復雜度, followsMe
的長度為O(n),而不是兩個長度都是線性的,所以O(n * k)。
為了完整起見,請注意,您也可以使用一個set
來加快“訂單事項”版本的線稿時間:
followsMeSet = set(followsMe)
unfollowThese = [person for person in iFollow if person not in followsMeSet]
set
成員資格測試是恆定的平均時間。
iFollow = ['Tom', 'Richard', 'Bob', 'Samantha', 'Kat']
followsMe = ['Samantha', 'Kat', 'Bob']
unfollowThese = [name for name in iFollow if name not in followsMe]
# returns: ['Tom', 'Richard']
你可以這樣做
unfollowThese = [x for x in iFollow if x not in followsMe]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.