【问题标题】:When using .append in Python item is getting appended multiple times. Why?在 Python 中使用 .append 时,项目会被多次附加。为什么?
【发布时间】:2012-05-13 20:52:33
【问题描述】:

我正在使用.append 用字符串填充一个空列表,但我的项目被多次附加。在第一个字符串被附加 5 次后,第二个字符串被附加 4 次。为什么会这样?

这是我正在使用的代码

kw_list_1 = []


def add_kw():
    kw_1 = raw_input('enter your first keyword - ')

    for kw in kw_1:
        kw_list_1.append(kw_1)


    kw_2 = raw_input('enter second keyword - ')

    for kw2 in kw_2:
        kw_list_1.append(kw_2)

    print kw_list_1

例如,如果我将'apple' 用于kw_1,将'pear' 用于kw_2,则会返回

['apple', 'apple', 'apple', 'apple', 'apple', 'pear', 'pear', 'pear', 'pear']

这里发生了什么? append 不是解决这个问题的正确方法吗?

【问题讨论】:

  • 你为什么在这里使用 for 循环?

标签: python list append


【解决方案1】:

这两行:

for kw in kw_1:
    kw_list_1.append(kw_1)

您正在循环kw_1,它是一个字符串,因此您的循环体对字符串中的每个字符执行一次。循环体将整个字符串附加到列表中。因此,如果您输入"apple",您将在列表中附加"apple" 五次。 "pear" 将被附加四次。

【讨论】:

  • 此外,您没有使用随每个循环而变化的东西,kw,这一事实应该是一个提示。如果你改为附加它,你会看到['a', 'p', 'p', 'l', ...
  • 太好了,感谢您的解释。我没有意识到循环会以这种方式做出反应。
【解决方案2】:

这是由于 for 循环造成的。

  for kw in kw_1:
            kw_list_1.append(kw_1)

只需使用 kw_list_1.append(kw_1) 删除 for 循环。

【讨论】:

    【解决方案3】:

    这个程序对我有用

    kw_list_1 = []
    def add_kw():
        kw_1 = raw_input('enter your first keyword - ')
        kw_list_1.append(kw_1)
        kw_2 = raw_input('enter second keyword - ')
        kw_list_1.append(kw_2)
        print kw_list_1
    add_kw()
    

    循环导致水果出现的次数与字符串中的字符一样多

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-21
      • 1970-01-01
      • 1970-01-01
      • 2022-05-18
      • 2014-03-08
      • 2019-07-13
      • 2018-08-31
      相关资源
      最近更新 更多