Je veux comparer des éléments dans la même liste et les ajouter à une autre liste mais j'ai quelques problèmes.
Par exemple:

a=[3,4,21,36,10,28,35,5,24,42]
c=[]

Je veux faire ceci:
4>3 ajouter à une autre liste.
21>4 ajouter à une autre liste.
36>21 ajouter à une autre liste.
28>10 mais ne l'ajoutez pas à une autre liste car 36 est plus grand que 28.
Le résultat doit être c=[4,21,36,42].

J'ai essayé ce code:

b=0
d=1
while len(a)>b and len(a)>d:
    if a[d]>a[b]:
        c.append(a[d])

    b+=1
    d+=1

Mais cela me donne à la place: c=[4, 21, 36, 28, 35, 24, 42]

1
Scyptor 4 juin 2020 à 13:27

3 réponses

Meilleure réponse

Essaye ça :

a=[3,4,21,36,10,28,35,5,24,42]
c = []

for x in range(1,len(a)):
    count = 0
    for y in range(x):
        if a[x] > a[y]:
            count = count + 1
    if count == x:
        c.append(a[x])
print(c)
1
Bhargav Desai 4 juin 2020 à 10:33

Il a fallu un moment pour réaliser que vous voulez des nombres inférieurs à TOUS les nombres précédents, pas seulement au nombre qui le précède.

Si vous voulez faire cela avec une compréhension de liste, vous pouvez faire:

c = [a[i] for i in range(1,len(a)) if a[i] > max(a[:i])]

Résultat: [4, 21, 36, 42]

Si, cependant, vous changez d'avis et décidez que vous voulez des nombres supérieurs à leur nombre précédent, vous pouvez faire:

c = [j for (i,j) in filter(lambda x: x[0] < x[1], zip(a, a[1:]))]

Résultat: [4, 21, 36, 28, 35, 24, 42]

0
bug_spray 4 juin 2020 à 11:12

Vous pouvez itérer et vérifier

currentList = [3,4,21,36,10,28,35,5,24,42]
newList = []
current_low = currentList[0]-1 # initialse current_low as [(first element of list) - 1]

for value in currentList:
    if value > current_low:
        newList.append(value)
        current_low = value

>>>print(newList)
[3, 4, 21, 36, 42]
0
Shijith 4 juin 2020 à 10:57