Python 给定特定范围的列表切片

Python 给定特定范围的列表切片,python,list,indexing,slice,Python,List,Indexing,Slice,首先,谢谢你看到这个问题,还有,一定有一个更简单的方法来解决这个问题。 我有两个列表,我称之为v1和v2,它们有不同的范围: 250-1100和900 1700 我想把它们切成900-950的范围。因此,这两种情况下,应将其下部切片,直到最小值为900,并将上部切片,直到最大值为950 注意:v1和v2被双索引[i][0]引用,因为它们是成对的数据,我按第一个值对列表进行切片(它们实际上是{x,y}对) 我用这个方法来处理它: def corte(v1, v2): for i in

首先,谢谢你看到这个问题,还有,一定有一个更简单的方法来解决这个问题。 我有两个列表,我称之为v1和v2,它们有不同的范围:

250-1100和900 1700

我想把它们切成900-950的范围。因此,这两种情况下,应将其下部切片,直到最小值为900,并将上部切片,直到最大值为950

注意:v1和v2被双索引[i][0]引用,因为它们是成对的数据,我按第一个值对列表进行切片(它们实际上是{x,y}对)

我用这个方法来处理它:

def corte(v1, v2):  
    for i in range(len(v1)):
        if i == 0 and v1[0][0] == v2[0][0]:
            break
        if v1[i][0] >= v2[0][0]:
            v1 = v1[i:]
            break

    if i == len(v2) and v1[-1][0] == v2[-1][0]:
        return v1, v2

    if v1[-1][0] > v2[-1][0]:
        i = len(v1)
        while i > 0:
            i -= 1  
            if v1[i - 1][0] <= v2[-1][0]:
                v1 = v1[:i]
                break
    else:
        i = len(v2)
        while i > 0:
            i -= 1  
            if v2[i - 1][0] <= v1[-1][0]:
                v2 = v2[:i + 1]
                break
    return v1, v2
def corte(v1、v2):
对于范围内的i(len(v1)):
如果i==0和v1[0][0]==v2[0][0]:
打破
如果v1[i][0]>=v2[0][0]:
v1=v1[i:]
打破
如果i==len(v2)和v1[-1][0]==v2[-1][0]:
返回v1,v2
如果v1[-1][0]>v2[-1][0]:
i=len(v1)
当i>0时:
i-=1
如果v1[i-1][0]0:
i-=1

如果v2[i-1][0]您需要所需输入和输出的具体示例,但我认为您需要列表理解。例如,这将返回
v1
中的值,其中成对的第一个元素在900-950范围内

[pair for pair in v1 if 900 <= pair[0] <= 950]

[v1中的pair for pair in v1 if 900您需要所需输入和输出的具体示例,但我认为您需要列表理解。例如,这将返回
v1
中的值,其中pair的第一个元素在900-950范围内

[pair for pair in v1 if 900 <= pair[0] <= 950]

[如果您的目标是根据元素的某些部分的值(例如,
元素[0]
)提取元素的子范围,请按以下方式进行操作:

sublist1 = list(filter((lambda elt: 900 <= elt[0] <= 950), v1))

sublist1=list(filter((lambda elt:900如果您的目标是基于元素的某些部分的值提取元素的子范围(例如,
element[0]
),请按以下方式执行:

sublist1 = list(filter((lambda elt: 900 <= elt[0] <= 950), v1))

sublist1=list(filter((lambda elt:900我想这会起作用:

v1=[[899.1,0],[900,0],[900.1,0],[920.0,0],[949.1,0],[950.1,0]]
v2=[[935,0],[945,0],[955,0]]
v3 = v1+v2
v3.sort(key=lambda x: x[0])
final_list = [x for x in v3 if x[0]>900 and x[0]<950]
print(final_list)
v1=[[899.1,0]、[900,0]、[900.1,0]、[920.0,0]、[949.1,0]、[950.1,0]]
v2=[[935,0],[945,0],[955,0]]
v3=v1+v2
v3.排序(key=lambda x:x[0])

如果x[0]>900和x[0]900以及x[0]我想这会起作用:

v1=[[899.1,0],[900,0],[900.1,0],[920.0,0],[949.1,0],[950.1,0]]
v2=[[935,0],[945,0],[955,0]]
v3 = v1+v2
v3.sort(key=lambda x: x[0])
final_list = [x for x in v3 if x[0]>900 and x[0]<950]
print(final_list)
v1=[[899.1,0]、[900,0]、[900.1,0]、[920.0,0]、[949.1,0]、[950.1,0]]
v2=[[935,0],[945,0],[955,0]]
v3=v1+v2
v3.排序(key=lambda x:x[0])


final_list=[x代表v3中的x如果x[0]>900和x[0]900和x[0]你能发布一个示例输入和你想要的输出吗?这可能更适合。不过,请阅读他们的页面以确保。你需要更好地解释自己。你所说的列表的“范围”是什么意思?没有这样的东西。这些值在列表列中吗?如果你的值是“实际上,{x,y}对”,你的代码到底与此有什么关系?你为什么要相互比较这些列表?看看你的问题,这毫无意义。更好的是:制作一个玩具示例,封装你所问的内容。省去额外的索引,
{x,y}
pairs等。我会看看如何放置一个示例输出。我制作了一个测试程序来实现这一点。你能发布一个示例输入和你想要的输出吗?这可能更适合。不过,请阅读他们的页面以确保。你需要更好地解释自己。你所说的“范围”是什么意思列表?没有这样的东西。这些值在列表列中吗?如果你的值是“实际的{x,y}对”,你的代码究竟与此有什么关系?你为什么要相互比较这些列表?看看你的问题,这毫无意义。更好的是:制作一个玩具示例,封装你所问的内容。省去额外的索引,
{x,y}
pairs,等等。我将看看如何放置一个示例输出。我制作了一个测试程序来实现这一点,我将进行一些测试,但我认为在将列表作为参数发送到方法之前使用列表可能会起作用。让我们看看……实际上它工作得很好,但我无法理解代码是如何理解条件的,父代是如何工作的如果那里需要它们?python实际上理解有两个比较器的条件?比如1@Breno我不理解你的问题“如果那里需要,括号怎么工作?”.是的,
1我做了一些研究,我明白了,当我说这句话时,我是在用一种算术的方式读这句话,忽略这一点,哈哈。谢谢你的帮助,我会做一些测试,但我认为在将列表作为参数发送到该方法之前使用列表可能会奏效。让我们看看……实际上它工作得很好,但我无法理解代码是如何理解条件的,如果需要,parentesis将如何工作?python实际上使用两个比较器理解条件?例如1@Breno我不理解您的问题“如果需要,括号将如何工作?”是的,
1我做了一些研究,我明白了,当我说这句话时,我是在用一种算术的方式读这句话,不要理会那句话。哈哈。谢谢你的帮助。这确实是我所希望的解决方案,但马克T让我的问题变得容易多了,我将能够删除大量不必要的行。只要我能将它们都标记为co正确…这确实是我所希望的解决方案,但Mark T使我的问题更容易解决,我将能够删除大量不必要的行。只有当我能够将它们标记为正确时。。。