【问题标题】:Iterate over two lists遍历两个列表
【发布时间】:2020-06-05 08:49:29
【问题描述】:

我想遍历 2 个列表,并比较同一列表中的元素以查看是更高还是更低。 像

高 = [5,7,8,4,2 ... 3] 低 = [16,4,8,1,48 ... 4]

如果数字高> 比前一个数字,将其添加到 high_list 如果 number in low

输出将是

high_list = [5,7,8] low_list = [16,4,1]

def iter_num (high,low):
    some_listH = []
    some_listL = []
    for H,L in zip(high,low):
        x = H +1
        if H > H[x]:
            H = H[x]
            some_listH.append(H)
        if L < L[x]:
            L = L[x]
            some_listL.append(L)
        return some_listH, some_listL

【问题讨论】:

  • 欢迎来到 Stack Overflow!我不确定你的问题是什么。您想做什么(您确实提到过),您尝试过什么,遇到了什么问题?
  • 我可以让它在 C# 中工作,但不熟悉 python 并且试图获得正确的缩进很烦人
  • 我可以修复缩进,但不确定代码应该做什么。如果您还展示了 C# 代码,也许会有所帮助。
  • @Basya TypeError: 'float' object is not subscriptable 它不喜欢我使用 x 进行索引。
  • 如果您的工作分别使用两个列表,将列表中的元素与同一个列表中的元素进行比较,而不是另一个列表,那么分别迭代列表似乎更有意义。跨度>

标签: python loops iteration selection-sort


【解决方案1】:

你写过:

 H > H[x]

H 要么是列表的元素,要么是列表。两者都不是。

这两个列表基本上没有任何关系。如果不能保证它们的长度相同,我不建议在同一个循环中处理它们。

这应该为一个列表做你想要的。您可以从中找出您想如何处理第二个列表,将其放入函数等。

list = [5,7,8,4,2,1,1,1,3]
some_listL = []

some_listL.append(list[0])
for x, y in zip(list, list[1:]):
    if y > x:
        some_listL.append(y)

print (some_listL)

为了在应得的地方给予赞扬,我从 here 学到了如何做到这一点

【讨论】:

  • 期望的结果是 [5,7,8] 这将返回 [5,7,8,3]
  • 您必须调整比较。根据我理解您的描述的方式,如果一个数字大于前一个数字,则应将其添加到新列表中。 3 大于 1。根据需要调整比较;构建块在这里。
  • 谢谢,我睡在上面,意识到我不需要在同一个列表中迭代 x,y。而是 x = 0 如果 x
  • 很高兴。顺便说一句,它在这个网站上的工作方式,你通过投票来表示“谢谢”。对于原始发帖人(在这种情况下是您),如果它解决了您的问题,也可以选择接受答案,方法是单击答案旁边的复选标记。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-08
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多