如何比较同一列表中的元素并追加到其他列表? (蟒蛇)

时间:2020-06-04 10:27:07

标签: python python-3.x list append compare

我想比较同一列表中的元素并追加到其他列表,但是我有一些问题。
例如:

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

我想这样做:
4>3追加到其他列表。
21>4追加到其他列表。
36>21追加到其他列表。
28>10,但不要将其附加到其他列表中,因为36大于28。
结果应为c=[4,21,36,42]

我尝试了以下代码:

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

但是它给了我: c=[4, 21, 36, 28, 35, 24, 42]

3 个答案:

答案 0 :(得分:1)

尝试一下:

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 :(得分:0)

您可以迭代并检查

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]

答案 2 :(得分:0)

花了一点时间才意识到您想要的数字要比所有以前的数字都要少,而不仅仅是前面的数字。

如果您想通过列表理解来做到这一点,可以这样做:

$(document).ready(function(){
var myCarousel = $(".carousel");
myCarousel.each(function() {        
    $(this).slick({
        dots: false,
        slidesToShow: 1,
        slidesToScroll: 1,
        autoplay: true,
        autoplaySpeed: 7 * 1000,
        mobileFirst: true,
        arrows: false
    });
  }); 
});

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

但是,如果您改变了主意并决定希望数字大于先前的数字,则可以执行以下操作:

[4, 21, 36, 42]

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