a = [4,4,6,4,10]
for i in a:
if i == 4:
i = i + 10
print(i)
我想这个代码,形成一个新的数组,这就是:
b = [14,14,6,14,10]
我不明白怎么去做吧。
a = [4,4,6,4,10]
for i in a:
if i == 4:
i = i + 10
print(i)
我想这个代码,形成一个新的数组,这就是:
b = [14,14,6,14,10]
我不明白怎么去做吧。
打破它的零件。现在你实际上正确地检查了一个等于4的数字并将它增加10,这很好。
你现在缺少两个关键部分:
else
条件。所以,在第一部分中,通过创建一个新的列表开始:
new_list = []
因此,我们有:
a = [4,4,6,4,10]
new_list = []
然后,你要append
到新名单:
for i in a:
if i == 4:
i = i + 10
new_list.append(i)
但是,现在,您需要适应第你不想增加è值,这就是你需要一个else
条件:
所以,如果它不等于4
,只需追加值是您新的列表:
for i in a:
if i == 4:
i = i + 10
new_list.append(i)
else:
new_list.append(i)
这几乎可以纠正你在代码中遇到的问题。
现在,一个小的调整,使的是这行:
i = i + 10
可以重新写为:i += 10
所以,最后,我们有:
a = [4,4,6,4,10]
new_list = []
for i in a:
if i == 4:
i += 10
new_list.append(i)
else:
new_list.append(i)
最后,这可以全部缩短为一行:
new_list = [i + 10 if i == 4 else i for i in a]
它可以用一个列表理解很容易做到:
>>> a = [4,4,6,4,10]
>>> b = [14 if x == 4 else x for x in a]
>>> b
[14, 14, 6, 14, 10]
或替代,更接近你的原始代码:
[i + 10 if i == 4 else i for i in a]
与您的代码的问题是该行
i = i + 10
不会修改列表的值。你所要做的就是重新绑定名称i
到i + 10
- 但是你对新的价值无能为力。
的传统方式,没有列表的理解,应该是这样的:
>>> a = [4,4,6,4,10]
>>> b = [] # empty result list
>>> for item in a:
... if item == 4:
... b.append(14) # alternatively: b.append(item + 10)
... else:
... b.append(item)
...
>>> b
[14, 14, 6, 14, 10]
@BobH。不要向别人发出垃圾邮件请求帮助。如果他们对标签感兴趣,他们会在Feed中看到它并阅读它。如果不是,他们不会。垃圾邮件不起作用。另外,如果答案[解决了你的问题],在[接受答案](http://meta.stackexchange.com/questions/5234)这里被认为是很好的做法(http://stackoverflow.com/help/someone-answers )。点击答案左边的复选标记/打勾,将其变成绿色。 – MattDMo