Python 要更新变量的值?

Python 要更新变量的值?,python,Python,考虑以下代码: l=[21,23,25,30,33,45,56,67,70,77--------------------] h=35 r1=[]; r2=[] for i in range(len(l)): if(l[i] < h): r1.append(l[i]) else: r2.append(l[i]) print r1 print r2 现在我需要增加h=35,这样当它达到46时,它的输出必须是 [21, 23, 25, 30, 33,45]

考虑以下代码:

l=[21,23,25,30,33,45,56,67,70,77--------------------]
h=35
r1=[]; r2=[]
for i in range(len(l)):
   if(l[i] < h):
      r1.append(l[i])
   else:
      r2.append(l[i])
print r1
print r2
现在我需要增加h=35,这样当它达到46时,它的输出必须是

[21, 23, 25, 30, 33,45]
[56, 67, 70, 77----------------------]
下一步当h达到57

[21, 23, 25, 30, 33,45,56]
[67, 70, 77-------------------------]
因此,总体而言,最终结果应显示:

[21, 23, 25, 30, 33]
[45, 56, 67, 70, 77-----------------]

[21, 23, 25, 30, 33,45]
[56, 67, 70, 77---------------]

[21, 23, 25, 30, 33,45,56]
[67, 70, 77--------------]

[21, 23, 25, 30, 33,45,56,67]
[70, 77--------------]

[21, 23, 25, 30, 33,45,56,67,70]
[77--------------]

[21, 23, 25, 30, 33,45,56,67,70,77]
[-----------------------]

在python中,如果不将其作为函数参数传递,会产生这样的结果吗?有人能为它推荐一个代码吗

使
h
成为函数的参数,并使用所需的
h
调用函数

def funct(h, l):
    r1=[]; r2=[]
    for i in range(len(l)):
        if(l[i] < h):
           r1.append(l[i])
        else:
           r2.append(l[i])
    print r1
    print r2

longL = [21,23,25,30,33,45,56,67,70,77]
for h in (35,46,57,68):
    funct(h, longL) 
定义函数(h,l): r1=[];r2=[] 对于范围内的i(len(l)): 如果(l[i]使
h
成为函数的参数,并使用所需的
h
调用函数

def funct(h, l):
    r1=[]; r2=[]
    for i in range(len(l)):
        if(l[i] < h):
           r1.append(l[i])
        else:
           r2.append(l[i])
    print r1
    print r2

longL = [21,23,25,30,33,45,56,67,70,77]
for h in (35,46,57,68):
    funct(h, longL) 
定义函数(h,l): r1=[];r2=[] 对于范围内的i(len(l)): 如果(l[i]除了jimifiki的答案之外,代码还可以简化,变得更像Python

def funct(h):
    l = [21,23,25,30,33,45,56,67,70,77]
    r1=[]; r2=[]
    for x in l:
        if x < h:
           r1.append(x)
        else:
           r2.append(x)

    print r1
    print r2

for h in (35,45,55,65):
    funct(h) 
def函数(h):
l=[21,23,25,30,33,45,56,67,70,77]
r1=[];r2=[]
对于l中的x:
如果x
除了jimifiki的答案之外,代码还可以简化,变得更像Python

def funct(h):
    l = [21,23,25,30,33,45,56,67,70,77]
    r1=[]; r2=[]
    for x in l:
        if x < h:
           r1.append(x)
        else:
           r2.append(x)

    print r1
    print r2

for h in (35,45,55,65):
    funct(h) 
def函数(h):
l=[21,23,25,30,33,45,56,67,70,77]
r1=[];r2=[]
对于l中的x:
如果x
以下是另一种方法:

l=[21,23,25,30,33,45,56,67,70,77]

def splitAt(data, point):
    less = [c for c in data if c < point ]
    more = [c for c in data if c >= point ]
    return [less,more]

print(splitAt(l, 35))

以下是另一种方法:

l=[21,23,25,30,33,45,56,67,70,77]

def splitAt(data, point):
    less = [c for c in data if c < point ]
    more = [c for c in data if c >= point ]
    return [less,more]

print(splitAt(l, 35))

如果您可以保证输入列表已排序(或者这样做是可行的),并且分割值也已排序,那么您可以使用
对分
,并从上一点开始继续搜索。您需要调整以下内容,以使用越界所需的任何行为:

import bisect

def split_list_at(L, points):
    pos = 0
    for val in points:
        pos = bisect.bisect_left(L, val, pos)
        yield L[:pos], L[pos:]

l=[21,23,25,30,33,45,56,67,70,77]
h = 35,46,57

for first, second in split_list_at(l, h):
    print first, second
for idx, lists in enumerate(split_list_at(l, xrange(100)):
    print idx, lists
并且,作为一项测试(看看你是否得到了正确的边界结果):


如果您可以保证输入列表已排序(或者这样做是可行的),并且分割值也已排序,那么您可以使用
对分
,并从上一点开始继续搜索。您需要调整以下内容,以使用越界所需的任何行为:

import bisect

def split_list_at(L, points):
    pos = 0
    for val in points:
        pos = bisect.bisect_left(L, val, pos)
        yield L[:pos], L[pos:]

l=[21,23,25,30,33,45,56,67,70,77]
h = 35,46,57

for first, second in split_list_at(l, h):
    print first, second
for idx, lists in enumerate(split_list_at(l, xrange(100)):
    print idx, lists
并且,作为一项测试(看看你是否得到了正确的边界结果):

如果L[j]>=st,则表达式
(j表示xrange(1,len(L))是一个生成器,它生成大于或等于值
st的L元素的所有索引
.next()
放在这个表达式之后,只给出这些索引中的第一个。
有了第一个索引,我们从上一个开始。因为条件
L[0],所以肯定有一个前面的条件
如果L[j]>=st,则表达式
(j表示xrange(1,len(L))是一个生成器,它生成大于或等于值
st的L元素的所有索引
.next()
放在这个表达式之后,只给出这些索引中的第一个。


有了第一个索引,我们从上一个开始。因为条件
L[0],所以肯定有一个前面的条件将h设为函数的参数,并使用所需的hWrap调用函数。在函数调用过程中,在函数中插入代码并传递
h
的值。如果l是一长串我之前不知道的数字。我如何将其作为参数传递?是否有任何方法可以增加h值并持续检查条件,直到函数结束列表。因为我的列表很长。将h作为函数的参数,并使用所需的hWrap调用函数中的代码,并在函数调用过程中传递
h
的值。如果l是一个很长的数字列表,我以前不知道。我如何将其作为参数传递??有没有办法增加h值并继续正在检查条件,直到列表结束。因为我的列表很长..+1表示不使用索引。请注意,对于l中的x,您需要
,而不是
rl
+1,以便不使用索引。请注意,对于l中的x,您需要
,而不是
rl
,我将返回列表的元组,而不是列表的列表。尽管如此,这不是一个错误的答案,但它在
l
上迭代了两次。我将返回列表的元组,而不是列表的列表。尽管如此,这不是一个错误的答案,但是它在
l
上迭代了两次。@devnull由于答案现在已经确定,您的注释已经过时了。也许值得注意。@jimifiki如果l是一长串我之前不知道的数字。我如何将其作为参数传递???@glgl我在评论几分钟后做了更改。(修订版将显示。)def funct(h,l):。。。然后用funct(35,[21,23,…])或funct(h,longL)@devnull调用函数。现在答案已经确定,您的注释已经过时。也许值得注意。@jimifiki如果l是一长串我之前不知道的数字。我如何将其作为参数传递???@glgl我在评论几分钟后做了更改。(修订版将显示。)def funct(h,l):。。。然后用funct(35,[21,23,…])或funct(h,longL)调用函数