Removing matching items from a list?

MRAB python at mrabarnett.plus.com
Sat Aug 3 17:06:15 EDT 2013


On 03/08/2013 21:12, kevin4fong at gmail.com wrote:
>
>
> Basically, I'm trying to find out how to remove matching items from a list. But there doesn't seem to be any information on how to go about doing this specific function.
>
> For example, what I want is:
>
> let's say there is a list:
>
> pHands[0] = ['ad', 'ac', 'as', 'ah', '7d', '8s', '9d', 'td', 'js', 'jd']
>
> So up there, my list, which is named pHands[0] has ten items in it.
>
> I'm trying to make a function where a search is initiated into the list and any matching items with a first matching number/letter reaching four are removed
>
> So in the end, ad, ac, as, ah (the four a's) will all be deleted/removed from the list. I need the list to automatically detect if there are four matching first letter/numbers in the items in the list.
>
> The remaining list will be: pHands[0] = ['7d', '8s', '9d', 'td', 'js', 'jd']
>
 >>> hands = ['ad', 'ac', 'as', 'ah', '7d', '8s', '9d', 'td', 'js', 'jd']
 >>> from collections import Counter
 >>> counts = Counter(hand[0] for hand in hands)
 >>> counts
Counter({'a': 4, 'j': 2, 't': 1, '7': 1, '9': 1, '8': 1})
 >>> counts.most_common()
[('a', 4), ('j', 2), ('t', 1), ('7', 1), ('9', 1), ('8', 1)]

So there are 4 aces.

 >>> hands = [hand for hand in hands if hand[0] != 'a']
 >>> hands
['7d', '8s', '9d', 'td', 'js', 'jd']




More information about the Python-list mailing list