【问题标题】:Python - Select all elements a list of a listPython - 选择列表中的所有元素
【发布时间】:2015-04-09 07:36:36
【问题描述】:

我想编写一系列代码(可能是函数、循环等)来获取每个列表的每个列表的前 6 个字符。

看起来像这样: http://www.mackolik.com/AjaxHandlers/FixtureHandler.aspx?command=getMatches&id=3170&week=1

这是我列表中的第一个列表,第二个可以在这里找到:week=2。

过了 11 点。

除此之外,我的列表中的每个列表元素都各不相同。

你能帮我或给一个想法来处理。

【问题讨论】:

  • 第二个在哪里可以找到?
  • 请说明您尝试过的方法以及问题所在
  • 有些项目甚至没有六个字符,那么你怎么能从每个项目中得到六个呢?你真的是指前六个元素吗?
  • 感谢您的极大关注,我需要一个循环来获取列表列表中每个元素的 6 位代码(表示匹配 id)。也就是说,有一个很大的列表再次构成列表,但长度不同。完全在这里:paste.ubuntu.com/10143649

标签: python arrays string list python-2.7


【解决方案1】:

看起来你有一个糟糕的多级数据字符串列表结构:

data = [
    ["[[342212,'21/02',,'MS'], [342276,'21/02',,'MS']]"],
    ["[[342246,'21/02',,'MS']]"]
]

你想收集[342212, 342276, 342246]

要正确执行此操作,您几乎必须将每个字符串解析为实际的数据结构;由于连续的逗号 (,,) 不是有效的 Python 语法,这使情况变得复杂

import ast

def fix_string(s):
                                    # '[,,,]'
    s = s.replace("[,", "[None,")   # '[None,,,]'
    s = s.replace(",,", ", None,")  # '[None, None,,]'
    s = s.replace(",,", ", None,")  # '[None, None, None,]'
    s = s.replace(",]", ", None]")  # '[None, None, None, None]'
    return s

data = [ast.literal_eval(fix_string(s)) for row in data for s in row]

这给了我们

data = [
    [
        [342212,'21/02', None, 'MS'],
        [342276,'21/02', None, 'MS']
    ],
    [
        [342246,'21/02', None, 'MS']
    ]
]

然后你可以收集类似的值

ids = [item[0] for batch in data for item in batch]

【讨论】:

    【解决方案2】:

    假设您有一个列表列表,例如

    all_data = [['abcdef', 1213, 12.5], ['ghijkl', 'bla', 'foo', 'baz']]
    first_items = [data[0] for data in all_data]
    print(first_items)
    

    如果您只将所有内容作为字符串,则每个子列表都由],[ 潜水,并且没有其他[] 括号,您可以:

    all_data_raw = "[[342174,'25/02','MS',1655,'Vefa',537,'Centone Karagümrük',,4,1,0,,,,,,,,,0,0,0,0,'0 - 0',0],[342265,'25/02','MS',649,'Beykozspor 1908',3,'Beşiktaş',,4,1,0,,,,,,,,,0,0,0,0,'0 - 0',0]"
    all_data = all_data_raw[2:-2].split('],[')
    first_items = [data[:6] for data in all_data]
    print(first_items)
    

    如果你想对数据做更多的事情,你应该对对象进行适当的导入。

    【讨论】:

    • 有人能解释一下否决票以避免我犯的错误吗?
    • 感谢塞巴斯蒂安,我没有给出否定的答案。您想看看我的解决方案与您的解决方案非常相似吗:
      maclar = list(scrape_page(y) for y in hafta) maclar2 = [m[0][0][2:-2].replace( "],[",";") for m in maclar] maclar3=maclar2.split(';') macvektor=[d[0:6] for d in maclar3]
      但它不起作用,因为它不会递归迭代。
    猜你喜欢
    • 2012-09-09
    • 1970-01-01
    • 2013-08-31
    • 2010-11-26
    • 2022-08-19
    • 1970-01-01
    • 2016-10-12
    • 2018-04-19
    • 1970-01-01
    相关资源
    最近更新 更多