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]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)调用函数