Partial list comprehensions

Joel Davis callmeclaudius at gmail.com
Fri Dec 4 17:11:00 EST 2009


On Dec 4, 3:41 pm, Mensanator <mensana... at aol.com> wrote:
> On Dec 4, 2:22 pm, Joel Davis <callmeclaud... at gmail.com> wrote:
>
> > Is it possible to run a list comprehension over a certain portion of
> > the list? My goals is to be able to run the comprehension on the
> > innermost elements of the list, but leaving the outermost intact.
>
> Something like this?
>
> >>> a
>
> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>
> >>> b = [i for i in a[0:5]]
> >>> b
> [0, 1, 2, 3, 4]
> >>> c = [i for i in a if i%2==0]
> >>> c
> [0, 2, 4, 6, 8]
>
>

Yes, sort of like that but Hansen's code is actually exactly what I
was getting at, not sure why he deleted it:

>>> a = range(100)
>>> a[2:-2] = [str(x) for x in a[2:-2]]
>>> a
[0, 1, '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '20', '21', '22', '23', '24',
'25', '26', '27', '28', '29', '30', '31', '32', '33', '34', '35',
'36', '37', '38', '39', '40', '41', '42', '43', '44', '45', '46',
'47', '48', '49', '50', '51', '52', '53', '54', '55', '56', '57',
'58', '59', '60', '61', '62', '63', '64', '65', '66', '67', '68',
'69', '70', '71', '72', '73', '74', '75', '76', '77', '78', '79',
'80', '81', '82', '83', '84', '85', '86', '87', '88', '89', '90',
'91', '92', '93', '94', '95', '96', '97', 98, 99]



More information about the Python-list mailing list