Re: [Tutor] Creating lists with definite (n) items without repetitions

2015-09-04 Thread marcus lütolf
Hello Peter, hello Martin,
many thanks for your very quick response !!!

As for Peter's advice:

> At first I thought you might want itertools.combinations()
>
 import string, itertools
 for t in itertools.combinations(string.ascii_lowercase, 3):
> ... print t # list(t) if you actually need a list
> ...
> ('a', 'b', 'c')
> ('a', 'b', 'd')
> ('a', 'b', 'e')
> ('a', 'b', 'f')
> ('a', 'b', 'g')
> [snip]
>
> but that gives
>
 sum(1 for t in itertools.combinations(string.ascii_lowercase, 3))
> 2600

the 5 lists above do not match my task insofar as every of the 5 lists
contains  'a' and 'b' which should occur only once, hence my count of a maximum 
of 301 lists, which might nor be correct 100%.
My be one could put it in Python as follows:
> ('a', 'b', 'c') = True
> ('a', 'b', 'd')= False
> ('a', 'b', 'e')= False
> ('a', 'b', 'f')= False
> ('a', 'b', 'g')= False
I should probably tell you the real task are a series (maximum ~ 301) lists in 
which real names  of people are assigned to the items/letters for
2 people(golfers) can be in  the same list(flight)  only once for an extended 
period of time. 
The next step would be to assign compatible and noncompatible attributes  to 
the items/letters which will reduce the maximum of possible lists(flights)


As for Martin's advice:
You are using random.  Do you want n randomly selected items from the input 
list?  The random module provides random.sample() to select n items from a 
sequence.

If so, try this out at the intercative prompt.  Perhaps this is what you are 
looking for?

   >>> import random
   >>> import string
   >>> l = list(string.lowercase)
   >>> random.sample(l, 7)
   ['z', 'h', 'e', 'n', 'c', 'f', 'r']

The two modules random and string should provide 7 ore more sets of 3 items not 
just one (letter ['z',..'r']) like
['z', 'a', 'b'], ['h','a','c'], ['e','a','d'], 
['n','a','f'],.['r','a','g'].

I hope I could make myself clear(er) and  used the appropriate format to 
communicate.
Thanks again for your help, Marcus
...

-Ursprüngliche Nachricht-
Von: marcus.luet...@bluewin.ch [mailto:marcus.luet...@bluewin.ch] 
Gesendet: Freitag, 4. September 2015 15:27
An: marcus.luet...@bluewin.ch
Betreff: Fwd: Creating lists with definite (n) items without repetitions


Ursprüngliche Nachricht
Von : marcus.luet...@bluewin.ch
Datum : 03/09/2015 - 15:32 (UTC)
An : tutor@python.org
Betreff : Creating lists with definite (n) items without repetitions

dear pythonistas
as a newcomber I want to create a set of lists containing n items, for example 
n = 3:  (['a','b','c'], ['a','d','e']...).
The sequence of items in each list should be different. If the letters 
'a''z' are used and n = 3 there is a maximum of 301 lists.
The following code works only for lists containing 1 item:

import random
list = ['a', 'b', 'c', 'd',... 'z']
random.shuffle(list)
for x in list:
 print x

how can I solve my task wit n items ?
Thank you for help, Marcus.



---
Diese E-Mail wurde von Avast Antivirus-Software auf Viren geprüft.
https://www.avast.com/antivirus

___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Syntax error and EOL Error

2015-09-04 Thread Peter Otten
Nym City via Tutor wrote:

>  import csv
> DomainList = []
> 
> domains = open('domainlist.csv', 'r')
> DomainList = csv.reader(domains)
> DomainList = [column[1] for column in DomainList]
> DomainList = (str(DomainList).rstrip('/')
> print('\n'.join(DomainList))
> 
> 
> I keep getting EOL error on the second the last line and syntax error on
> the last print line. Even when I change the print line to say the
> following: print(DomainList) Please advise. Thank you in advance.
> Thank you.

Look at the lines preceding the one triggering the SyntaxError. Usually 
there is an opening (, [ or { which doesn't have a matching closing 
counterpart. 

In your case count the parens in the line

> DomainList = (str(DomainList).rstrip('/')

By the way, even without error this line will not have the desired effect.
Given 

>>> DomainList = ["facebook.com/", "twitter.com/"]

converting to string gives

>>> str(DomainList)
"['facebook.com/', 'twitter.com/']"

and as that doesn't end with a "/" applying the rstrip() method has no 
effect. Instead you can modify the line

> DomainList = [column[1] for column in DomainList]

where you can invoke the rstrip() method on every string in the list.

___
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor