在python中将1更改为奇数元素后打印列表?

时间:2014-11-17 18:41:13

标签: python list python-2.7 add

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。

除了追加之外的任何其他关键字或方法?谢谢

4 个答案:

答案 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,那么您执行此操作的方式将无效。 ils中任意给定点的值的副本,修改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]

list comprehension tutorial

或者使用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()内置函数依次返回列表中的每个索引和相应的项。