繁体   English   中英

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

[英]Print a list after updating 1 to odd elements in python?

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。 我没有列表。请帮忙吗? 我是python的新手,我对软件包了解不多,我正在使用python 2.7.1。

除append以外的任何其他关键字或方法? 谢谢

每个元素在单独的行上打印的原因是因为您要在循环的每个阶段打印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]
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

实际上,您的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)

要实际修改列表,请使用:

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()依次返回列表中的每个索引和对应的项目。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM