【问题标题】:Iterating through python string array gives unexpected output遍历python字符串数组会产生意外的输出
【发布时间】:2014-12-11 10:08:09
【问题描述】:

我正在调试一些 python 代码,作为初学者,我正在使用打印语句。我将问题缩小到:

paths = ("../somepath") #is this not how you declare an array/list?
for path in paths:
    print path

我期待整个字符串被打印出来,但只有. 是。由于我计划无论如何都要扩展它以覆盖更多路径,看来

paths = ("../somepath", "../someotherpath")

修复问题并正确打印出两个字符串。

我假设初始版本将字符串视为字符数组(或者也许这只是我所说的 C++)并且只是打印出字符.?...??

我还是想知道为什么会这样。

【问题讨论】:

  • () 用于元组,列表为[]
  • 一个列表将是["../somepath"]
  • 是否有任何其他语言用类似的括号声明单元素数组/元组,并且还处理括号的使用以用于许多其他目的?
  • @jamylak C++ 和 C 使用 {}。我是动态类型的新手。
  • @jamylak:请注意,有时您甚至不需要括号来制作元组,例如a=3,4,5

标签: python


【解决方案1】:
("../somepath")

只不过是一个括在括号中的字符串。所以,它与"../somepath" 相同。由于 Python 的 for 循环可以遍历任何可迭代对象并且字符串恰好是可迭代对象,因此它一次打印一个字符。

要创建一个包含一个元素的元组,请在末尾使用逗号

("../somepath",)

如果要创建列表,需要使用方括号,像这样

["../somepath"]

【讨论】:

  • OP想要创建一个数组/列表
【解决方案2】:
paths = ["../somepath","abc"]

这样你可以创建列表。现在你的代码可以工作了。

paths = ("../somepath", "../someotherpath") 这在形成一个元组时起作用。这又是一种非可变列表。

【讨论】:

    【解决方案3】:

    测试了一下,输出是每行一个字符

    所以每个字符都打印一个字符

    为了得到你需要的东西

    # your code goes here
    paths = ['../somepath'] #is this not how you declare an array/list?
    for path in paths:
        print path
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-05
      • 1970-01-01
      相关资源
      最近更新 更多