【问题标题】:how to change values in an list and create a new list如何更改列表中的值并创建新列表
【发布时间】:2016-06-21 14:34:40
【问题描述】:

代码:

a = [4,4,6,4,10]

for i in a:
    if i == 4:
        i = i + 10
        print(i)

我希望这段代码组成一个新数组,即:

b = [14,14,6,14,10]

我不明白该怎么做。

【问题讨论】:

    标签: python arrays list if-statement for-loop


    【解决方案1】:

    把它分成几部分。现在,您实际上正在正确地检查等于 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]
    

    【讨论】:

    • @BobH。不要向寻求其他问题帮助的人发送垃圾邮件。如果他们对这些标签感兴趣,他们会在他们的提要上看到它并阅读它。如果没有,他们不会。垃圾邮件不起作用。此外,如果答案为addressed your problem,则accept an answer 被认为是一种很好的做法。单击答案左侧的复选标记/勾号,将其变为绿色。
    【解决方案2】:

    可以通过列表理解轻松完成:

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

    【讨论】:

      【解决方案3】:
      for idx in range(len(a)):
          i = a[idx]
          if i == 4:
              i = i+10
              a[idx] = i
      

      【讨论】:

      • 这正是我想要的。谢谢!
      猜你喜欢
      • 1970-01-01
      • 2022-01-16
      • 1970-01-01
      • 2020-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多