【问题标题】:How to get some values of sublists with the values of 2 other lists?如何使用其他 2 个列表的值获取子列表的一些值?
【发布时间】:2021-02-14 03:36:25
【问题描述】:

我声明了letters,其中一个有更多的子列表,我声明了rowcolumns。 我想要做的是用rowcolumn 的值来获取letters 的一些值。例如,我想要 letters 在 row[0](其中一个是 0)和 column[0](其中一个是 2)中的值,所以我必须在 letters 中再次重复该过程使用 row[1](哪一个是 2)和 column[1](哪一个是 1)。所以在最后当我打印finalOutput 时,它应该显示在控制台['C', 'R'] 中。 如果我的解释不好,请见谅,但你可以指导你最终的结果。

我写了这个:

letters = [['letters1', 'a', 'c', 'b', 'BUILD'], ['letter2','F', 'P', 'Z', 'W', 'SHOW', 'BUILD'], ['leters3','R', 'X', 'N', 'BUILD', 'SHOW']]

row = [0, 2]
columns = [2, 1]

finalOutput = []
    
for i in range(len(letters)):
    for j in range(len(letters[i])):
        finalOutput.append(letters[row[i]][columns[j]])
print(finalOutput)

但是使用这段代码我会遇到下一个错误IndexError: list index out of range,显然我没有之前提到的输出。

希望有人能帮助我,谢谢!

【问题讨论】:

  • Eduardo,你需要考虑一下什么是列表索引。
  • 是否保证行列列表中的索引总是小于字母的长度?

标签: python python-3.x list for-loop list-comprehension


【解决方案1】:

在嵌套的 for 循环中,for 语句应该遍历 rowcolumns 中的元素(因此从 row[0]columns[0] 开始,然后是 row[1]columns[1])。

它现在所做的是遍历letters 中的每个元素,因此当i = 0j = 2 时它会中断 - 这在rowcolumns 中不存在,但它是letters.

你想要的是这样的:

for i in range(len(row)):
    finalOutput.append(letters[row[i]][columns[i]])
print(finalOutput)

这会遍历您的目标行列组合,而不是 letters 中的每个元素。

【讨论】:

    猜你喜欢
    • 2021-11-16
    • 2019-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-11
    • 1970-01-01
    • 2019-11-26
    • 2021-05-13
    相关资源
    最近更新 更多