【问题标题】:comparing two list of lists with unequal size of each element list比较两个列表列表,每个元素列表的大小不相等
【发布时间】:2017-05-11 12:50:22
【问题描述】:

我有两个正在处理的列表: L=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]] A=[[1,2],[4,5]] 我想将 L 与 A 进行比较,以便将以下输出附加到单独的列表中 K=[3,6] 此函数应检查列表 A 的第一行,即 [1,2] 与列表 L 的行的前两个元素,即 [1,2],如果它们相等,则列表 L 中行的第三个元素将是存储在单独的列表 K 中。有人可以提供工作代码或至少指出我正确的方向吗?

到目前为止,我已经想出了这个:

k=[]
for i in range(len(L)):
    if A[i][0]==l[i][0] and A[i][1]==L[i][1]:
        k.append(L[i][2])

我得到的错误是“IndexError: list index out of range”

提前致谢! :)

【问题讨论】:

  • 你能告诉我们你到目前为止的尝试吗?
  • 另外,您的问题的当前版本中存在未定义的行为...例如,L 中的任何行可以匹配A 中的任何行吗?作为替代方案,只有行L[i] 可以匹配A[i],如果不能跳到A[i+1]。从您的示例和解释中并不清楚这一点。
  • k=[] for i in range(len(A)): for j in range(len(A)): if A[i][j]==L[i][j ] 和 A[i][j+1]==L[i][j+1]:打印 k k.append(L[i][j+2])
  • 我得到的错误是“IndexError: list index out of range”。我知道 if 语句中的索引超出了范围。请提出一些建议。
  • L[2] 呢?应该搭配什么?

标签: python algorithm python-2.7 list nested-lists


【解决方案1】:

这应该可以实现您正在寻找的东西(使用 len() 有点草率,如果您的列表长度不同,您可能会遇到错误)

L=[[1,2,3],[4,5,6],[7,8,9],[10,11,12]]
A=[[7,8],[4,5]]
K=[]
for x in range(len(A)):
    for y in range(len(L)):
        if A[x] == L[y][:2]:
            K.append(L[y][2])
print K
out: [9, 6]

【讨论】:

  • 此代码不适用于以下情况:L=[[1,2,3],[4,5,6],[7,8,9],[10,11, 12]] A=[[7,8],[10,11]] 在这种情况下,输出列表 K 应该是 [9,12] 但它是一个空列表,因为它只检查前两个元素L. 你能解决这个问题吗?
  • 我创建了一个单独的循环来解决您的问题。如果 L 中有多个列表具有相同的两个前整数,则它们的第三个元素都将被附加。
猜你喜欢
  • 1970-01-01
  • 2020-07-04
  • 1970-01-01
  • 2019-12-07
  • 1970-01-01
  • 1970-01-01
  • 2016-11-17
相关资源
最近更新 更多