Velocity Reviews > Two random lists from one list

# Two random lists from one list

noydb
Guest
Posts: n/a

 03-11-2011
Hello All,

I am just looking to see if there is perhaps a more efficient way of
doing this below (works -- creates two random teams from a list of
players). Just want to see what the experts come up with for means of
learning how to do things better.

Thanks for any responses!

###
import random
players = ["jake", "mike", "matt", "rich", "steve", "tom", "joe",
"jay"]
teamA = random.sample(players, 4)
print teamA
teamB = []
for p in players:
if p not in teamA:
teamB.append(p)
print teamB

Chris Hulan
Guest
Posts: n/a

 03-11-2011
On Mar 11, 1:21*pm, noydb <(E-Mail Removed)> wrote:
> Hello All,
>
> I am just looking to see if there is perhaps a more efficient way of
> doing this below (works -- creates two random teams from a list of
> players). *Just want to see what the experts come up with for means of
> learning how to do things better.
>
> Thanks for any responses!
>
> ###
> import random
> players =
> teamA = random.sample(players, 4)
> print teamA
> teamB = []
> for p in players:
> * * if p not in teamA:
> * * * * teamB.append(p)
> print teamB

players = ["jake", "mike", "matt", "rich", "steve", "tom", "joe",
"jay"]
random.shuffle(players)
teamA, TeamB = players[:4],players[4:]

Peter Otten
Guest
Posts: n/a

 03-11-2011
noydb wrote:

> Hello All,
>
> I am just looking to see if there is perhaps a more efficient way of
> doing this below (works -- creates two random teams from a list of
> players). Just want to see what the experts come up with for means of
> learning how to do things better.
>
> Thanks for any responses!
>
> ###
> import random
> players = ["jake", "mike", "matt", "rich", "steve", "tom", "joe",
> "jay"]
> teamA = random.sample(players, 4)
> print teamA
> teamB = []
> for p in players:
> if p not in teamA:
> teamB.append(p)
> print teamB

>>> random.shuffle(players)
>>> teamA = players[:4]
>>> teamB = players[4:]
>>> teamA, teamB

(['tom', 'mike', 'jay', 'rich'], ['jake', 'matt', 'joe', 'steve'])

Tim Chase
Guest
Posts: n/a

 03-11-2011
On 03/11/2011 12:21 PM, noydb wrote:
> I am just looking to see if there is perhaps a more efficient way of
> doing this below (works -- creates two random teams from a list of
> players). Just want to see what the experts come up with for means of
> learning how to do things better.
>
> ###
> import random
> players = ["jake", "mike", "matt", "rich", "steve", "tom", "joe",
> "jay"]
> teamA = random.sample(players, 4)
> print teamA
> teamB = []
> for p in players:
> if p not in teamA:
> teamB.append(p)
> print teamB

I'd be tempted to do

temp = players[:] # copy players
random.shuffle(temp) # you could directly shuffle players
# if you don't care about mangling it
team_a = temp[:4]
team_b = temp[4:]
del temp # optional

This assumes you want balanced-ish teams.

-tkc

noydb
Guest
Posts: n/a

 03-18-2011
Thanks All for your responses, all a help!