【问题标题】:Storing list variables as a string and storing it as a variable将列表变量存储为字符串并将其存储为变量
【发布时间】:2010-01-08 12:33:56
【问题描述】:

我正在尝试将列表项输入到字符串中。然后我想将字符串存储为变量并在另一个函数中打印出来。到目前为止我得到的代码是:

def b(): 

    ID = [0, 1, 2]
    ID2 = 'ID={0}.{1}.{2}'.format(*ID) 
    return ID2 

if __name__ == '__main__': ID2 = b() 


def c(ID2): 
    print ID2 

if __name__ == '__main__': myObject = c(ID2) 

我得到的输出是:

[0, 1, 2] 

任何帮助将不胜感激。谢谢

我返回了列表以及 ID2。这是造成问题的原因。对此感到抱歉。

代码现在可以工作了。谢谢

【问题讨论】:

  • 这是您使用的实际代码吗?
  • @SilentGhost 我正在使用与此类似的代码。仅生成列表未声明。
  • 你能指定你期望的输出类型吗?
  • @chrissygormley:很明显,b 返回的不是字符串而是列表。如果你可以在 IDLE 中测试你的代码,你会看到这个错误的原因
  • 如果真的是这样的话,我建议你考虑创建一个类并定义__repr__()函数让它打印出上面的ID?

标签: python


【解决方案1】:

这个怎么样:

>>> ''.join([str(x) for x in [1, 2, 3]])
'123'

【讨论】:

  • 我真的不确定他到底想要什么。我希望他想要这样的结果“ID=0,ID=1,ID=2”
  • 重点是 OP 在字符串格式方面没有问题。他的问题是他甚至在执行格式化之前就从b返回,而不是没有发布此代码。
【解决方案2】:

如果您想将 [0,1,2] 更改为“0.1.2”(就像您之前问题中的版本字符串),您可以这样做。

>>> '.'.join(map(str,[0, 1, 2]))
'0.1.2'

【讨论】:

    【解决方案3】:
    1. 您可能不应该有与您的函数参数名称匹配的全局变量名称。这是合法的,但非常非常令人困惑。还有调试的噩梦。

    2. 您可能不应该使用全部大写的变量名。它看起来很奇怪,让有经验的 Python 程序员难以阅读您的代码。

    3. 您可能不应该有多个 if __name__ == "__main__" 部分。这是非常非常令人困惑的调试噩梦。

    我怀疑这些“装饰性”问题让您很难弄清楚您的程序到底出了什么问题。

    def b(): 
        id = [0, 1, 2]
        aString = 'ID={0}.{1}.{2}'.format(*id) 
        return aString 
    
    def c(id2): 
        print id2 
    
    if __name__ == '__main__': 
        someString = b() 
        myObject = c(someString) 
    

    您可能会发现这更容易调试。

    我的输出。

    ID=0.1.2
    

    顺便说一句。你的函数c 总是返回None。所以myObject = c(someString) 没有多大意义。

    【讨论】:

      【解决方案4】:
      def b():
          ID = [0, 1, 2]
          ID2 = ('ID=%d.%d.%d' % tuple(ID))
          return ID2
      
      if __name__ == '__main__': ID2 = b()
      
      def c(ID2):
          print ID2
      
      if __name__ == '__main__': myObject = c(ID2)
      

      适合我,手边没有 python3,所以不能尝试使用 .format()-syntax。

      但是myObject = c(ID2) 没有意义,函数 c() 不返回任何内容

      【讨论】:

      • list长度超过100的情况下,你会写%d百遍吗?
      • 如果列表长于3,我想我会做一个"ID=%s" % ".".join( ["%d" % x for x in list])
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-10
      • 2017-11-13
      • 1970-01-01
      • 1970-01-01
      • 2012-08-25
      • 2012-08-16
      • 1970-01-01
      相关资源
      最近更新 更多