2016-03-07 66 views

回答

2

打破它的零件。现在你实际上正确地检查了一个等于4的数字并将它增加10,这很好。

你现在缺少两个关键部分:

  1. 创建一个新的列表,并追加到它
  2. 所有您需要的其他元素的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] 
+2

@BobH。不要向别人发出垃圾邮件请求帮助。如果他们对标签感兴趣,他们会在Feed中看到它并阅读它。如果不是,他们不会。垃圾邮件不起作用。另外,如果答案[解决了你的问题],在[接受答案](http://meta.stackexchange.com/questions/5234)这里被认为是很好的做法(http://stackoverflow.com/help/someone-answers )。点击答案左边的复选标记/打勾,将其变成绿色。 – MattDMo

1

它可以用一个列表理解很容易做到:

>>> 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 

不会修改列表的值。你所要做的就是重新绑定名称ii + 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] 
1
for idx in range(len(a)): 
    i = a[idx] 
    if i == 4: 
     i = i+10 
     a[idx] = i 
+0

这就是我正在寻找的。谢谢! – Ted

相关问题