Python 我只想返回列表中的奇数
我这里的问题是,代码正确地过滤掉偶数,这是我想要的,但是它在7处停止,并且不显示数字9,这是我期望它做的。我试过检查我的代码,但似乎找不到问题所在Python 我只想返回列表中的奇数,python,list,Python,List,我这里的问题是,代码正确地过滤掉偶数,这是我想要的,但是它在7处停止,并且不显示数字9,这是我期望它做的。我试过检查我的代码,但似乎找不到问题所在 def remove_even(numbers) : new_list = [] for i in range(0,len(numbers)-1) : if i % 2 != 0 : new_list.append(i) return new_list l = [1,2,3,4,5,6,
def remove_even(numbers) :
new_list = []
for i in range(0,len(numbers)-1) :
if i % 2 != 0 :
new_list.append(i)
return new_list
l = [1,2,3,4,5,6,7,8,9,10]
print(remove_even(l))
你应该直接循环你的值,而不是索引
for i in numbers:
否则,如果您想使用范围,则必须将其索引到列表中
为简洁起见,列表理解非常适合这种类型的任务
>>> new_list = [num for num in l if num % 2 == 1]
>>> new_list
[1, 3, 5, 7, 9]
你应该直接循环你的值,而不是索引
for i in numbers:
否则,如果您想使用范围,则必须将其索引到列表中
为简洁起见,列表理解非常适合这种类型的任务
>>> new_list = [num for num in l if num % 2 == 1]
>>> new_list
[1, 3, 5, 7, 9]
是一个简单的返回
[1, 3, 5, 7, 9]
是一个简单的返回
[1, 3, 5, 7, 9]
这是因为您正在从0开始for循环的range函数,并在lennumbers-1结束,在您的例子中,lennumbers-1是9,python range将一直运行到end-1: 例如:
for i in range(0,9):
print(i)
将打印“否”:
0
1.
2.
3.
4.
5.
6.
7.
八,
这就是为什么输出中没有9
您不必从0开始循环。
如果从0开始,可以按如下方式安排for循环:
一,
或者,您可以像python一样编写代码
def remove_even(numbers) :
new_list = []
for i in numbers :
if i % 2 != 0 :
new_list.append(i)
return new_list
这是因为您正在从0开始for循环的range函数,并在lennumbers-1结束,在您的例子中,lennumbers-1是9,python range将一直运行到end-1: 例如:
for i in range(0,9):
print(i)
将打印“否”:
0
1.
2.
3.
4.
5.
6.
7.
八,
这就是为什么输出中没有9
您不必从0开始循环。
如果从0开始,可以按如下方式安排for循环:
一,
或者,您可以像python一样编写代码
def remove_even(numbers) :
new_list = []
for i in numbers :
if i % 2 != 0 :
new_list.append(i)
return new_list
def odd_numbersn:return[x代表范围1中的x,n+1如果x%2==1]printodd_numbers5应该打印[1,3,5]def odd_numbersn:return[x代表范围1中的x,n+1如果x%2==1]printodd_numbers5应该打印[1,3,5]使用列表理解很简单: def奇数_非: 如果n%2==1,则返回[x代表范围n+1中的x]
使用列表理解很简单: def奇数_非: 如果n%2==1,则返回[x代表范围n+1中的x]
使用过滤器内置功能,您可以更轻松地执行此操作:
list(filter(lambda x: x % 2, l))
它将只保留条件计算为True的元素使用过滤器内置功能可以更轻松地执行此操作:
list(filter(lambda x: x % 2, l))
它将只保留条件计算为True的元素
你的算法是正确的。所有你需要改变的是-1到+1,你会得到你想要的结果
如果只需更改一项,为什么要更改逻辑算法
你的算法是正确的。所有你需要改变的是-1到+1,你会得到你想要的结果
如果只需更改一项,为什么要更改逻辑算法。请在询问之前检查是否使用列表理解创建列表。no_偶数=[x代表范围内的x如果x%2!=0]在索引中循环,则需要将循环内的i替换为数字[i]。另请参见在Python中使用递归执行此任务是疯狂的。递归地这样做的唯一原因是作为递归中的一个练习,我怀疑OP还没有达到那个阶段。请在询问之前检查一下,使用列表理解来创建您的列表。no_偶数=[x代表范围内的x如果x%2!=0]在索引中循环,则需要将循环内的i替换为数字[i]。另请参见在Python中使用递归执行此任务是疯狂的。递归执行此操作的唯一原因是作为递归的练习,我怀疑OP还没有到那个阶段。您描述的两个方法一点也不等效。您描述的两个方法一点也不等效。不起作用:不起作用:这不是有效的python。这不是有效的python。问题已经得到解答。迭代范围而不是数字不是正确的解决方案。问题已经解决了。迭代范围而不是数字不是正确的解决方案。
def remove_even(numbers) :
new_list = []
for i in range(0,len(numbers)-1) :
if i % 2 != 0 :
new_list.append(i)
return new_list
l = [1,2,3,4,5,6,7,8,9,10]
print(remove_even(l))