【问题标题】:list being printed out weirdly python列表被奇怪地打印出来python
【发布时间】:2013-04-24 18:02:29
【问题描述】:

我有一个这样的列表

[796, 829, 1159, 1162]

我也有一个这样的列表:

['144 154', '145 151', '145 152', '145 153', '145 154', '146 152', '146 153', '146 154', '147 153', '147 154'] 这些不是按比例计算的

我想要做的是使用第一个列表元素作为最后一个数组的索引

我试过这段代码:

contacts = []
for i in findres:
    contacts += rulelines[i]
print contacts

其中findres 是第一个列表,rulelines 是最后一个列表 然而,这会奇怪地打印出contacts 列表:

['5', ' ', '7', '2', '5', ' ', '1', '0', '5', '7', ' ', '1', '5', '0', '7', ' ', '1', '5', '3']

我确定这很容易,但我哪里出错了??

我认为理想的输出是['5 72','5 105', '7 150',7 153']

我没有放下所有列表元素,因为每个元素都有 100 多个元素

【问题讨论】:

  • 你能告诉我你想要的输出是什么吗?
  • 好吧,如果第一个列表是findres,第二个列表是rulelines,那么这不会产生你给出的输出。
  • 你能在你的代码中也包含rulelinesfindres吗?
  • 您确定 findres 索引在规则边界内吗?

标签: python list


【解决方案1】:

看起来当您分配 contacts = rulelines[i] 时,您实际上是在分配 rulelines[i] 字符串。您应该使用contacts.append(rulelines[i]) 将联系人添加到列表中,否则您会不断覆盖上次分配的内容。

【讨论】:

    【解决方案2】:

    将此用作模板:

    findres = [5, 7, 15, 22]
    contacts = list('abcdefghijklmnopqrstuvwxyz') # dummy list
    
    result = [ contacts[index] for index in findres ]
    print result
    
    # ['f', 'h', 'p', 'w']
    

    【讨论】:

      【解决方案3】:

      如果我理解正确,您需要先提取findres 的每个元素中的第一个数字。然后,将这些提取的数字用作另一个数组的索引

      >>> findres = ['144 154', '145 151', '145 152', '145 153', '145 154', '146 152', '146 153', '146 154', '147 153', '147 154']
      >>> first_elements = [c.split()[0] for c in findres]
      >>> print first_elements 
      
      ['144', '145', '145', '145', '145', '146', '146', '146', '147', '147']
      
      >>> contact = []
      >>> for i in first_elements:
              contacts.append(rulelines[i])
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-29
        • 1970-01-01
        • 2023-03-05
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多