【问题标题】:Python: Searching and Manipulating a 2D listPython:搜索和操作二维列表
【发布时间】:2021-08-23 14:57:00
【问题描述】:

我又提出了另一个关于列表的问题,但这次是关于 2D 列表。我尝试使用提供给我的先前方法来更改下面代码中给出的列表中的值。但是,当我使用 2D 列表时,这不起作用。这是代码:

    fruits = [ 
["Banana", "Apple", "Watermelon", "Apple"],
["Apple", "Banana", "Watermelon", "Lemon"]
]
print(fruits)

findFruit = input("Fruit: ")
replaceFruit = input("Replace: ")

for i in range(len(fruits)):
    if fruits[i] == findFruit:
        fruits[i] = replaceFruit


print(fruits)

我的另一个问题是使用一个函数来计算列表中有多少个“findFruit”实例,我尝试在二维列表中使用 count(),但它也没有奏效。

【问题讨论】:

  • 你能打印fruits[i]看看它是什么吗?
  • 它只打印第二个列表:["Apple", "Banana", "Watermelon", "Lemon"]
  • 那么怎么可能等于findFruit呢?你需要另一个迭代。

标签: python arrays list for-loop replace


【解决方案1】:

对每个水果使用计数功能[i]

您必须使用嵌套的 for 循环来访问 2D 列表中的每个元素。

作为, fruits[0] 将是 ["Banana", "Apple", "Watermelon", "Apple"]

并且, fruits[0][1] 将是“Apple”

所以正确使用循环。

【讨论】:

    【解决方案2】:

    2D 列表会有行和列,例如 mXn,您的列表是 2X4,但您只检查 2 行。

    fruits = [["Banana", "Apple", "Watermelon", "Apple"], ["Apple", "Banana", "Watermelon", "Lemon"]]
    print(fruits)
    
    findFruit = input("Fruit: ")
    replaceFruit = input("Replace: ")
    
    for i in range(len(fruits)):    # len(fruits) is 2
        for j in range(len(fruits[i])):    # len(fruits[i]) is 4
            if fruits[i][j] == findFruit:
                fruits[i][j] = replaceFruit
    
    
    print(fruits)
    

    【讨论】:

    • 至于使用count(),可以循环遍历每一行,将fruits[i].count(findFruit)的值相加得到二维列表的总数
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 1970-01-01
    • 1970-01-01
    • 2017-07-06
    相关资源
    最近更新 更多