我的问题是:编写一个函数,子列表,将数字列表作为参数。在函数中,使用while循环返回输入列表的子列表。子列表应包含与原始列表相同的值,直至达到数字5(不应包含数字5)。
我修改它,有时我会得到部分正确的问题。
def sublist(x):
a = [int(x) for x in input()]
while x < 5:
x = x + 1
return(x)
答案 0 :(得分:2)
尝试:
import itertools
def sublist(x):
return list(itertools.takewhile(lambda n: n != 5, x))
更新:如果这是一个家庭作业问题,那么我的答案对您不起作用-但nor should we just give you an answer对您不起作用,因此,请查看while
和break
。考虑创建一个空列表开始,向其中添加内容,直到需要停止,然后返回它。
答案 1 :(得分:0)
如果您希望编写一个将列表中的每个元素都取到数字5的函数(例如[1、2、3、4、5]-> [1、2、3、4]),则可以这样做:
def sublist(input_list):
output_list = []
index = 0
while index < len(input_list):
if input_list[index] != 5:
output_list.append(input_list[index])
index += 1
else:
break
return output_list
到达5时,while循环中断。在此之前,每个值都被添加到一个新列表中,然后由该函数返回。
更新:在检查索引的条件小于输入列表的长度时更改
答案 2 :(得分:0)
您似乎不明白这个问题。
编写一个函数
sublist
,该函数以数字列表作为参数。
这意味着如果我们有这个:
def sublist(x):
pass
然后x
将是一个list
— 不是,例如您的数字。另外,您无需对input()
做任何事情;您已经有了列表,因此根本不需要该行。
在函数中,使用
while
循环返回输入列表的子列表。
好吧,Python具有一个名为"generators"的功能,可让您非常轻松地做到这一点!我要作弊,不使用while
循环。相反,我将使用for
循环:
def sublist(x):
for num in x:
if num == 5:
# we need to stop; break out of the for loop
break
# output the next number
yield num
现在此代码有效:
>>> for num in sublist([3, 4, 2, 5, 6, 7]):
... print(num)
3
4
2
>>>
但是,sublist
从技术上讲不会返回 list 。相反,让我们使用一些MAGIC来使它们返回列表:
make
from functools import wraps
return_list = lambda f:wraps(f)(lambda *a,**k:list(f(*a,**k)))
(您不需要知道它是如何工作的。)现在,当我们定义函数时,我们用return_list
decorate来使它成为list
的输出:
@return_list
def sublist(x):
for num in x:
if num == 5:
# we need to stop; break out of the for loop
break
# output the next number
yield num
现在这也可行:
>>> print(sublist([3, 4, 2, 5, 6, 7]))
[3, 4, 2]
>>>
万岁!
答案 3 :(得分:0)
如果您想使用while
循环来检查数字值,则最好从输入列表中创建一个generator并使用next()
对其进行迭代:
def sublist(x):
sub = []
x = (num for num in x) # create a generator
num = next(x, 5)
while num != 5:
sub.append(num)
num = next(x, 5) # iterate
return sub
x = [1, 3, 4, 5, 1, 2, 3]
sublist(x)
>>> [1, 3, 4]
答案 4 :(得分:0)
def sublist(x):
accum = 0
sub = []
while accum < len(x):
if x[accum]== 5:
return sub
else:
sub.append(x[accum])
accum = accum +1
return sub
x = [1, 3, 4, 5,6,7,8]
print(sublist(x))
答案 5 :(得分:0)
def sublist(lst):
output_list = []
for i in lst:
while i==5:
return output_list
output_list.append(i)
return output_list
答案 6 :(得分:0)
我就是这样。
def sublist(x):
count = 0
new = []
if 5 in x:
while(x[count] != 5):
new.append(x[count])
count += 1
return new
else:
return x
答案 7 :(得分:0)
def sublist(num):
list = []
for x in num:
if x == 5:
break
while x != 5:
list.append(x)
break
return list
num = [1,2,4,6,7,8,9,5,1,3,4]
print(sublist(num))
答案 8 :(得分:-1)
num = [1, 2, 3, 17, 1, 3, 5, 4, 3, 7, 5, 6, 9]
new = []
def check_nums(x):
idx = 0
while idx < len(x) and x[idx] != 7:
print(idx)
new.append(x[idx])
idx += 1
print(idx)
return new
print(check_nums(num))
答案 9 :(得分:-1)
def sublist(a):
i=0;
lst=[];
while(i<len(a) and a[i]!=5):
lst.append(a[i]);
i+=1;
return lst;