【问题标题】:how to loop element for list in python如何在python中为列表循环元素
【发布时间】:2021-10-08 11:04:26
【问题描述】:

list=[[AA,'1'] ,[BB,'4'] ,['CC','3']]

我想扩展计数列表[1]的列表[0]

预期输出:['AA','BB','BB','BB','BB','CC','CC','CC']

我尝试了以下 2 种方法但不起作用...请告诉我我需要修复的地方?

⓵
variableName = []
         for row in rows:
            vName = row[0]
            count = int(row[1])
                          
            result = Counter(vName=count)
            variableName.append(list(result.elements()))

⓶
variableName = []
         for row in rows:
            vName = row[0]
            count = int(row[1])
      while count < countRW:
                variableName.append(vName) 

【问题讨论】:

  • 你让它变得比应该的更难。尝试简化如下:[i for i, n in list1 for _ in range(int(n))]?
  • 我第一次尝试 python 这就是为什么我不知道一些关键字.. 感谢您的回答我会尝试这种方式

标签: python-3.x list loops


【解决方案1】:

如果您通过传递 dict 对象而不是具有固定名称的关键字参数来正确构造 Counter 对象,并且如果您调用 list.extend 来避免嵌套列表,则您的第一种方法将起作用:

for row in rows:
    vName = row[0]
    count = int(row[1])
    result = Counter({vName: count})
    variableName.extend(list(result.elements()))

如果您在 while 循环中不断减少计数器并在计数器达到 0 时退出循环,则您的第二种方法将起作用:

for row in rows:
    vName = row[0]
    count = int(row[1])
    while count > 0:
        variableName.append(vName)
        count -= 1

【讨论】:

    【解决方案2】:

    首先,您提供的列表格式不正确。应该是list1 =[['AA','1'] ,['BB','4'] ,['CC','3']]

    之后,您可以使用输出函数并将所需列表作为参数传递,您将获得一个列表作为回报:

    list1 =[['AA','1'] ,['BB','4'] ,['CC','3']]
    
    def output(rows):
        variableName = []
        for row in rows:
            vName = row[0]
            count = int(row[1])
            for num_of_element in range(count):
                variableName.append(vName)
        return variableName
    
    print(output(list1))
    

    【讨论】:

    • 感谢您的快速回答。当我使用它时,我得到错误“TypeError:'list'对象不能被解释为整数”。
    • 我已经编辑了答案。这次你不应该得到任何错误。尝试理解代码。
    猜你喜欢
    • 1970-01-01
    • 2014-01-08
    • 1970-01-01
    • 1970-01-01
    • 2016-07-21
    • 2012-05-26
    相关资源
    最近更新 更多