# [Tutor] problem solving with lists

marcus.luetolf at bluewin.ch marcus.luetolf at bluewin.ch
Fri Mar 18 13:21:19 EDT 2022

```..I simplified the code below with a for loop :

>lst = [['a', 'b', 'c'], ['d', 'e', 'f'], ['a', 'b', 'g'], ['b', 'c', 'h']]

>sub_lst = []

>p = 0

>pair1 = lst[p][0:2]

>pair2 = list(lst[p][0]+ lst[p][2])

>pair3 = lst[p][1:]

>for i in lst:

>    print(i)

>    if pair1 or pair2 or pair3 not in i:

>        sub_lst.append(i)

>    p += 1

>print(sub_lst)

Bur main problem stays the same, getting all 4 instead of only 3 sublists.

Marcus

…many thanks for your quick replay.

When I used a for loop :

>lst = [['a', 'b', 'c'], ['d', 'e', 'f'], ['a', 'b', 'g'], ['b', 'c', 'h']]

>sub_lst = []

>for p in lst:

>    pair1 = lst[p][0:2]

>    pair2 = list(lst[p][0]+ lst[p][2])

>    pair3 = lst[p][1:]

>    print('pair1:', pair1, 'pair2: ', pair2, 'pair3: ', pair3)

>    if pair1 or pair2 or pair3 not in sub_lst:

>        sub_lst.append(lst[p])

>    print(sub_lst)

I got a traceback:

……..

line 5, in <module>    pair1 = lst[p][0:2]

TypeError: list indices must be integers or slices, not list

And yes, the code above did not do what I exspected. But I don’t understand

what you mean with

If pair 1 not empty

Or pair2 not empty

Or pair3 not in newlist

What is the difference between pair not beeing empty or not beeing in new_list ?

How should I define the if condition properly ?

Marcus.

Von: alan.gauld at yahoo.co.uk <alan.gauld at yahoo.co.uk>
Gesendet: Freitag, 18. März 2022 15:00
An: marcus.luetolf at bluewin.ch
Cc: tutor at python.org
Betreff: Re: AW: [Tutor] problem solving with lists

On 18 Mar 2022 13:07,  <mailto:marcus.luetolf at bluewin.ch> marcus.luetolf at bluewin.ch wrote:

>lst = [['a', 'b', 'c'], ['d', 'e', 'f'], ['a', 'b', 'g'], ['b', 'c', 'h']]

>n = len(lst)
>p = 0
>new_lst = []
>while n > 0:
>    pair1 = lst[p][0:2]
>    pair2 = list(lst[p][0]+ lst[p][2])
>    pair3 = lst[p][1:]
>    print('pair1:', pair1, 'pair2: ', pair2, 'pair3: ', pair3)
>    if pair1 or pair2 or pair3 not in new_lst

I suspect that's not doing what you think. Python sees it as

If pair 1 not empty

Or pair2 not empty

Or pair3 not in newlist

I don't think that's what you want.

BTW why does

For p in lst not work?

It seems to be what you are effectively doing...

Alan G

>From my phone, apologies for any typing errors...

```