two files into an alternate list

Ricardo Aráoz ricaraoz at gmail.com
Wed Oct 31 10:28:39 EDT 2007


Tim Chase wrote:
>>     i have a file :
>>          file 1:
>> 1
>> 2
>> 3
>> 4
>> 5
>> 6
>>
>> file2:
>> a
>> b
>> c
>> d
>> e
>> f
>> how do i make the two files into  list like this =
>> [1,a,2,b,3,c,4,d,5,e,6,f]
> 
>   from itertools import cycle
>   def serialize(*sources):
>     while True:
>       for source in sources:
>         yield source.next()
>   def stripper(iterator):
>     for thing in iterator:
>       yield thing.strip()
>   for thing in serialize(
>       stripper(file('file1.txt')),
>       stripper(file('file2.txt'))
>       ):
>     print thing
> 
> As a previous responder noted, there are a number of ways to
> treat the edge cases when the lengths of the files don't match.
> Since you left the condition underqualified, I chose to let it
> expire when the first one gave out rather than try and deal with
> the complications of such ambiguity.
> 
> -tkc
> 

Or maybe just :

>>> r = []
>>> for a, b in map(None
		, (int(i.strip('\n')) for i in open('file1.txt'))
		, (i.strip('\n') for i in open('file2.txt'))) :
	r.append(a)
	r.append(b)

>>> r
[1, 'a', 2, 'b', 3, 'c', 4, 'd', 5, 'e', None, 'f']






More information about the Python-list mailing list