ls=[1,2,3,4,5,6,7,8,9,10]
for i in ls:
if(i%2!=0):
i=i+1
print i
我会像2,4,6,8,10那样分别得到答案。我没有得到list.please帮助? 我是python的新手。我不太了解这些包,我使用的是python 2.7.1。
除了追加之外的任何其他关键字或方法?谢谢
答案 0 :(得分:1)
每个元素在单独行上打印的原因是因为您在循环的每个阶段都打印i
。在这种情况下,i
会在每个步骤中引用列表ls
中的索引,因此它永远不会包含列表中所需的所有值。
如果您只想打印列表中的奇数元素,您应该创建一个空列表并在循环中添加它:
new_list = []
for i in ls:
if(i % 2 == 1):
new_list.append(i + 1)
print new_list
或者你可以像这样使用列表理解:
print [i + 1 for i in ls if i % 2 != 0]
请注意,如果您希望实际修改ls
,那么您执行此操作的方式将无效。 i
是ls
中任意给定点的值的副本,修改i
不会修改ls
内的任何内容。如果您想在for循环中实际更改ls
的值:
for i in range(len(ls)):
if ls[i] % 2 == 1:
ls[i] += 1
或使用条件表达式:
ls = [i + 1 if i % 2 == 1 else i for i in ls]
答案 1 :(得分:1)
ls=[1,2,3,4,5,6,7,8,9,10]
result = []
for i in ls:
if(i%2!=0):
i=i+1
result.append(i)
print result
答案 2 :(得分:1)
你的for循环实际上只是一次打印出每个第一个。在任何时候你都没有创建一个列表。你有选择。
您可以使用列表理解:
ls = [1,2,3,4,5,6,7,8,9,10]
yourlist = [i + 1 for i in ls if i % 2 != 0]
>>> print yourlist
[2, 4, 6, 8, 10]
或者使用for循环获得相同的结果:
result = []
for i in ls:
if i % 2 != 0:
result.append(i + 1)
答案 3 :(得分:1)
要实际修改列表,请使用:
ls=[1,2,3,4,5,6,7,8,9,10]
for i, num in enumerate(ls):
if num % 2 != 0:
ls[i] += 1
print ls
请注意,要更新列表,您必须将其编入索引:ls[i]
(Python索引从0开始)。 enumerate()
内置函数依次返回列表中的每个索引和相应的项。