![](/img/trans.png)
[英]How to print two aligned columns of text from a list (which may have an odd number of elements) in 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
,那么您将无法使用它。 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]
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.