TypeError:通过迭代追加数组时,list.append() 仅接受一个参数(给定 2 个)错误

问题描述 投票:0回答:5

我希望我的代码找到大写字母的位置并将它们添加到数组中。测试后,我收到错误: TypeError: list.append() 只需要一个参数(给定 2 个参数) 此外,当使用单个大写字母的输入进行测试时,它工作得很好,但是当它们是多个大写字母时,数组将仅包含最后一个位置。

for i in range(0,length):
    letter = camel_case[i]

    for k in range(0,25):
        check = capitals[k]

        if  check == letter:
            position = i
            print(f"{position}")

            global caps

            caps = []
            
            caps.append(capital_quantity,i)
            capital_quantity = capital_quantity + 1


        else:
            pass

python arrays cs50
5个回答
4
投票

该错误是不言自明的。

append
函数仅接受一个参数,但传递了两个参数。

替换以下代码行:

caps.append(capital_quantity,i)

这样:

caps.append(capital_quantity)

1
投票

对于列表,您一次只能附加一项。如果您想将 Capital_quantity 和 i 保留在一起,您可以将它们作为辅助列表附加到您的列表中,即

caps.append([capital_quantity,i])

值得注意的是,如果出于某种原因您想以平面结构而不是嵌套列表将这两个值添加到列表中,您可以使用 .extend() 方法。 是了解该行为的很好的教程。


0
投票

好像你把

list.append
list.insert
搞混了。

list.append
接受一个参数以添加到列表末尾,而
list.insert
接受位置参数和要插入到列表的该位置的项目。

此外,您的代码中似乎还存在其他错误/修复。

  1. range(0,25)
    应该是
    range(0,26)
    ,因为范围中的最后一项将比结束参数少一个(数字 0-24 而不是 0-25)
  2. 每次调用时,
  3. caps=[]
    都会将列表
    caps
    设置为空列表。我认为这不是你想要的。
  4. 你不需要
    else:pass
  5. 您不需要
    capital_quantity
    。只需使用
    list.append
    。如果您需要计算列表中有多少个大写字母,只需执行
    len(caps)

这是我如何以最直接的方式解决这个问题:

caps=[]
for i,c in enumerate(camel_case):
    if c.isupper():
        caps.append(i)

我们检查字符串

c
中的每个字符
camel_case
是否为大写,如果是,我们将其索引
i
添加到列表中。


0
投票

您可以像这样使用大括号将两个或多个数据保存在列表中。

caps.append({capital_quantity,i})

0
投票

使用list.extend方法

caps.extend([capital_quantity,i])

caps.extend((capital_quantity,i))

© www.soinside.com 2019 - 2024. All rights reserved.