In article <6c0bdea5-23bd-4854-8016-4bf0af3b7...@googlegroups.com>, kevin4f...@gmail.com wrote:
> let's say there is a list: > > pHands[0] = ['ad', 'ac', 'as', 'ah', '7d', '8s', '9d', 'td', 'js', 'jd'] I assume this is a card game, and these are cards (ad = Ace of Diamonds, etc). > 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 I'm not quite sure how to parse that, but I think what you're saying (using the deck of cards model) is you want to find all the sets of 4 cards of the same rank. In the example above, you've got all four aces (which, in the wrong saloon, can get you shot). I think I would do something like: ----------------------------------------- import collections def remove_four_of_a_kind(hand): ranks = [card[0] for card in hand] counts = collections.Counter(ranks) fours = [rank for rank, count in counts.items() if count == 4] new_hand = [card for card in hand if card[0] not in fours] return new_hand hand = ['ad', 'ac', 'as', 'ah', '7d', '8s', '9d', 'td', 'js', 'jd'] print remove_four_of_a_kind(hand) ----------------------------------------- $ python cards.py ['7d', '8s', '9d', 'td', 'js', 'jd'] I just gave a class yesterday where we covered list comprehensions and Counters, so maybe I just have comprehensions on the brain today :-) -- http://mail.python.org/mailman/listinfo/python-list