【问题标题】:How to manipulate string items in a 3d list in python? (without numpy)如何在 python 中操作 3d 列表中的字符串项? (没有numpy)
【发布时间】:2021-03-13 13:54:51
【问题描述】:

我有一个长 6 项、宽 6 项的 3d 列表,它是一个字符串列表的列表。

lst = [   [['A'],['A'],['B'],['B'],['A'],['A']],
          [['B'],['B'],['A'],['A'],['B'],['B']],
          [['A'],['A'],['B'],['B'],['A'],['A']],
          [['B'],['B'],['A'],['A'],['B'],['B']],
          [['A'],['A'],['B'],['B'],['A'],['A']],
          [['B'],['B'],['A'],['A'],['B'],['B']],
  ]

我想将字符串移动到列表中的其他位置,但我知道我没有使用正确的代码:

lst.insert([1][0][0], 'A')

给我一​​个TypeError: 'int' object is not subscriptable

我知道如何通过这样做来添加项目:

lst2 = lst[0][0]

lst2.append('A')

(向第一项添加另一个 'A' 字符串)

我想对最下面的列表执行各种操作,例如:

  • 向该列表添加/删除字符串,
  • 检查该列表中有多少字符串项
  • 将“A”或“B”字符串移动到不同的位置,以便它们具有多个字符串。
  • 查看列表中的第一个字符串是什么

我对编程很陌生,我刚刚开始了解如何使用 2d 列表。

如何在没有任何额外模块或库的情况下完成此任务?

【问题讨论】:

  • 无意冒犯,但 numpy 实际上非常有用!安装和导入只需一秒钟。

标签: python list arraylist


【解决方案1】:

首先,让我澄清这一行:

lst.insert([1][0][0], 'A')

插入方法需要一个int 参数作为索引。如果你想在多维列表中插入一个元素,应该这样做:

lst[1][0].insert(0, 'A')

毕竟,它是一个列表(列表)。仅当您查看内部索引(由 2 个坐标定义)时,您才会得到一个简单的列表(在这种情况下为字符串)。然后,您可以通过调用insert() 方法将字符串元素插入到这个简单的列表中。

检查该列表中有多少字符串项

count = 0
for d2 in lst: #d2 is a 2d list (an element of a 3d list)
    for d1 in d2: # d1 - 1 dimensional
        count += len(d1)

在这里,我使用嵌套循环遍历了每个最底层(简单)列表,计算了每个列表中有多少元素并将它们相加。

将“A”或“B”字符串移动到不同的位置,以便它们具有多个字符串。

假设我想将元素从[3][2][0] 移动到[1][2][1]。我会将它插入新位置,然后从旧位置删除。

element = lst[3][2][0]         # the task can be accomplished without using another variable, but this is for better understanding
lst[1][2].insert(1, element)   # inserting
lst[3][2].pop(0)               # deleting

元素甚至可以移动到像[1][2] 这样的位置。所以会有一个字符串和其他“子列表”

查看列表中的第一个字符串是什么

你的意思是lst[0][0][0]

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-11
    • 2017-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多