如何在Python中删除列表中的这些值?

如何在Python中删除列表中的这些值?,python,list,Python,List,如何删除每个列表上的递增值 如果我删除这些列表中的递增项,它们应该如下所示: x1 = [1, 2, 3, 4, 5, 6] x2 = [3, 5, 6, 8, 9] x3 = [2, 4, 5, 7, 13] x4 = [11, 22, 33, 24, 55, 66] x5 = [11, 7, 1, 2, 3, 4, 5, 6] 你的问题不清楚。“删除增加的值”是什么意思 很明显,您的意思不是“删除所有大于上一个的值”,因为示例结果包括最后一个较大的元素 但是,假设你知道你的意思,下面是如何

如何删除每个列表上的递增值

如果我删除这些列表中的递增项,它们应该如下所示:

x1 = [1, 2, 3, 4, 5, 6]
x2 = [3, 5, 6, 8, 9]
x3 = [2, 4, 5, 7, 13]
x4 = [11, 22, 33, 24, 55, 66]
x5 = [11, 7, 1, 2, 3, 4, 5, 6]

你的问题不清楚。“删除增加的值”是什么意思

很明显,您的意思不是“删除所有大于上一个的值”,因为示例结果包括最后一个较大的元素

但是,假设你知道你的意思,下面是如何做到这一点:

要从列表中删除值,请执行以下操作:

x1 = [1, 6]
x2 = [3, 9]
x3 = [2, 13]
x4 = [11, 33, 24, 66]
x5 = [11, 7, 1, 6]
从列表中删除特定位置的项:(记住Python列表从位置0开始,而不是位置1)


你的问题不清楚。“删除增加的值”是什么意思

很明显,您的意思不是“删除所有大于上一个的值”,因为示例结果包括最后一个较大的元素

但是,假设你知道你的意思,下面是如何做到这一点:

要从列表中删除值,请执行以下操作:

x1 = [1, 6]
x2 = [3, 9]
x3 = [2, 13]
x4 = [11, 33, 24, 66]
x5 = [11, 7, 1, 6]
从列表中删除特定位置的项:(记住Python列表从位置0开始,而不是位置1)


这将删除任何增加的元素:

代码: 测试代码: 结果:
这将删除任何增加的元素:

代码: 测试代码: 结果:
您可以使用生成器建立运行并生成结果,例如:

[1, 6]
[3, 9]
[2, 13]
[11, 24, 66]
[11, 7, 1, 6]
def运行(iterable):
iterable=iter(iterable)
i=[next(iterable)]#未处理空的iterable
对于iterable中的j:
而j和i[-1]>>[数据中d的列表(运行(d))]
[[1, 6], [3, 9], [2, 13], [11, 33, 24, 66], [11, 7, 1, 6]]

您可以使用生成器建立运行并产生结果,例如:

[1, 6]
[3, 9]
[2, 13]
[11, 24, 66]
[11, 7, 1, 6]
def运行(iterable):
iterable=iter(iterable)
i=[next(iterable)]#未处理空的iterable
对于iterable中的j:
而j和i[-1]>>[数据中d的列表(运行(d))]
[[1, 6], [3, 9], [2, 13], [11, 33, 24, 66], [11, 7, 1, 6]]


投票被否决是怎么回事?是否有必要?跳过第一个位置,检查一个元素和下一个元素。如果它们在增加,请删除上一个元素。重复说我有一个列表x=[11,7,1,2,3,4,5,6]。在那个列表中,增加的值是从2到5。为什么不在那个列表中增加6呢?为什么投票被否决了?是否有必要?跳过第一个位置,检查一个元素和下一个元素。如果它们在增加,请删除上一个元素。重复说我有一个列表x=[11,7,1,2,3,4,5,6]。在该列表中,增加值从2增加到5。为什么不在该列表中增加6?更改理解中的测试为什么不是
[11,33,24,66]
?是的,刚刚注意到了。它应该是[11,33,24,66]。代码有问题@Stephen RaunchSo你们都看到了我不知道的东西。这就是我添加的测试用例,因为最初没有递减数据。建议某人解释为什么33应该在那里……我从OP的问题和示例中得到了答案,他希望第一个和最后一个在递增运行中,但中间没有任何内容,例如
[1,2,3,4,5,6]==[1,6]
在理解中更改测试为什么不是
[11,33,24,66]
?是的,刚刚注意到了。它应该是[11,33,24,66]。代码有问题@Stephen RaunchSo你们都看到了我不知道的东西。这就是我添加的测试用例,因为最初没有递减数据。建议某人解释为什么33应该在那里……我从OP的问题和示例中得到了答案,他希望第一个和最后一个在递增运行中,但中间没有任何内容,例如
[1,2,3,4,5,6]==[1,6]
我喜欢。。。给你上鞋帮,太好了!非常感谢。我喜欢。。。给你上鞋帮,太好了!非常感谢。
data = (
    [1, 2, 3, 4, 5, 6],
    [3, 5, 6, 8, 9],
    [2, 4, 5, 7, 13],
    [11, 22, 33, 24, 55, 66],
    [11, 7, 1, 2, 3, 4, 5, 6]
)

for d in data:
    print(remove_increasing(d))
[1, 6]
[3, 9]
[2, 13]
[11, 24, 66]
[11, 7, 1, 6]
def runs(iterable):
    iterable = iter(iterable)
    i = [next(iterable)]  # Empty iterable not handled
    for j in iterable:
        while j and i[-1] < j:
            i.append(j)
            j = next(iterable, None)
        i[1:-1] = []      # Removes the middle of the run, if there is one
        yield from i
        i = [j]
    if j:
        yield j

# Using @StephenRauch data set
data = (
    [1, 2, 3, 4, 5, 6],
    [3, 5, 6, 8, 9],
    [2, 4, 5, 7, 13],
    [11, 22, 33, 24, 55, 66],
    [11, 7, 1, 2, 3, 4, 5, 6]
)

>>> [list(runs(d)) for d in data]
[[1, 6], [3, 9], [2, 13], [11, 33, 24, 66], [11, 7, 1, 6]]