[Tutor] Output of list

2007-12-22 Thread Emil

hey

I want to be capable of converting a string into a list where all the items, in 
 the list, have a fixed length not equal to 1 e.g i have k = 'abcdefgh' and I 
want the fixed length for all the the items to be 2 then the list would look 
like ['ab', 'cd', 'ef, 'gh']. How do i do this?


- Emil   
_
Express yourself instantly with MSN Messenger! Download today it's FREE!
http://messenger.msn.click-url.com/go/onm00200471ave/direct/01/
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Output of list

2007-12-22 Thread Ricardo Aráoz
Emil wrote:
> hey
> 
> I want to be capable of converting a string into a list where all the items, 
> in  the list, have a fixed length not equal to 1 e.g i have k = 'abcdefgh' 
> and I want the fixed length for all the the items to be 2 then the list would 
> look like ['ab', 'cd', 'ef, 'gh']. How do i do this?
> 
> 

map(''.join, zip(k[::2], k[1::2]))
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Output of list

2007-12-22 Thread Ricardo Aráoz
Emil wrote:
> hey
> 
> I want to be capable of converting a string into a list where all the items, 
> in  the list, have a fixed length not equal to 1 e.g i have k = 'abcdefgh' 
> and I want the fixed length for all the the items to be 2 then the list would 
> look like ['ab', 'cd', 'ef, 'gh']. How do i do this?
> 
> 

Also : [''.join(i) for i in zip(k[::2], k[1::2])]
___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Output of list

2007-12-22 Thread Martin Walsh
Ricardo Aráoz wrote:
> Emil wrote:
>> hey
>>
>> I want to be capable of converting a string into a list where all the items, 
>> in  the list, have a fixed length not equal to 1 e.g i have k = 'abcdefgh' 
>> and I want the fixed length for all the the items to be 2 then the list 
>> would look like ['ab', 'cd', 'ef, 'gh']. How do i do this?
>>
>>
> 
> Also : [''.join(i) for i in zip(k[::2], k[1::2])]

Cool use of 'zip' and extended slicing!

Just thought I would add that 'zip' truncates after the shortest
sequence, which would cause data loss for strings of odd length -- of
course, the OP may not consider this a problem.

In [1]: k = 'abcdefghi' # <- note the 'i'

In [2]: len(k)
Out[2]: 9

In [3]: [''.join(i) for i in zip(k[::2], k[1::2])]
Out[3]: ['ab', 'cd', 'ef', 'gh'] # <- 'i' is gone


HTH,
Marty





___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Output of list

2007-12-22 Thread Alan Gauld

"Emil" <[EMAIL PROTECTED]> wrote

> I want to be capable of converting a string into a list where all 
> the items,
>  in  the list, have a fixed length not equal to 1

You can use list slicing to do this.
Combine with the stepsize parameter of the range function

> k = 'abcdefgh' and I want the fixed length for all the the
> items to be 2 then the list would look like ['ab', 'cd', 'ef, 'gh'].

k = 'abcdefgh'
new = []
for n in range(0,len(k),2):  # 2=stepsize
 new.append(k[n:n+2])   # use slice
print new

As a list comprehension that would be:

new = [k[n:n+2] for n in range(0,len(k),2)]

And as a more general function:

def splitStringByN(s,n):
   return [s[m:m+n] for m in range(0,len(s),n)]

Should work,

HTH,

-- 
Alan Gauld
Author of the Learn to Program web site
http://www.freenetpages.co.uk/hp/alan.gauld


___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor


Re: [Tutor] Output of list

2007-12-22 Thread Ricardo Aráoz
Martin Walsh wrote:
> Ricardo Aráoz wrote:
>> Emil wrote:
>>> hey
>>>
>>> I want to be capable of converting a string into a list where all the 
>>> items, in  the list, have a fixed length not equal to 1 e.g i have k = 
>>> 'abcdefgh' and I want the fixed length for all the the items to be 2 then 
>>> the list would look like ['ab', 'cd', 'ef, 'gh']. How do i do this?
>>>
>>>
>> Also : [''.join(i) for i in zip(k[::2], k[1::2])]
> 
> Cool use of 'zip' and extended slicing!
> 

Thx

> Just thought I would add that 'zip' truncates after the shortest
> sequence, which would cause data loss for strings of odd length -- of
> course, the OP may not consider this a problem.
> 
> In [1]: k = 'abcdefghi' # <- note the 'i'
> 
> In [2]: len(k)
> Out[2]: 9
> 
> In [3]: [''.join(i) for i in zip(k[::2], k[1::2])]
> Out[3]: ['ab', 'cd', 'ef', 'gh'] # <- 'i' is gone
> 

Could only think of :
[''.join(i) for i in zip(k[::2], k[1::2])] + list(k)[-(len(k)%2):0:-len(k)]

But maybe it is too complicated. There should be a simpler way.


___
Tutor maillist  -  Tutor@python.org
http://mail.python.org/mailman/listinfo/tutor