【问题标题】:Adding strings, first, first + second, etc添加字符串,第一,第一+第二等
【发布时间】:2020-12-17 04:31:29
【问题描述】:

我需要编写一个程序,从列表中添加字符串并按顺序输出它们:

1 string
1 + 2 string
1 + 2 + 3 string ...
def spacey(array):
    pass
    e = ""
    i = ""
    m = []
    
    for e in list(array):
        i += e

    return (i)

这给了我所有加在一起的字符串的输出,例如:

Thisismyquestionforyou

但我需要

This
Thisis
thisismy...

【问题讨论】:

  • 每次追加字符串时都需要打印,不仅在末尾。
  • 具体是什么问题?你做过调试吗?请参阅How to Askhelp center

标签: python arrays


【解决方案1】:

您可以使用itertools.accumulate 轻松完成此操作

>>> from itertools import accumulate
>>> s = "This is my question for you"
>>> list(accumulate(s.split()))
['This', 'Thisis', 'Thisismy', 'Thisismyquestion', 'Thisismyquestionfor', 'Thisismyquestionforyou']

【讨论】:

  • 这很好,但它给了我:AttributeError: 'list' object has no attribute 'split'
  • 我已将s 定义为字符串。如果您已经有一个列表,请调用 list(accumulate(s))
【解决方案2】:

这应该可行:

>>> def foo(list):
...     s=""
...     for i in list:
...             print(s+i)
...             s+=i
... 

【讨论】:

  • 是的,但它没有给我列表输出:我需要它在 [1string, 12string, 123string] 即使我以列表方式输出它也不能那样工作。
  • @Vidar567 创建另一个参数,例如def foo(list, result),而不是print(s+i),将其附加到result 列表result.append(s+i)。调用函数时,为result 参数传递一个空列表
【解决方案3】:

问题是你设置了整个字符串然后输出它

应该是这样的

for e in list(array):
    i += e
    print(i)

这将按照你想要的方式打印它,但显然你不能返回完整的字符串,然后输出它。并提醒您相应地命名您的变量

for subString in list(array)
    fullString += subString
    print(fullString)

或类似的东西,更清晰,并提供需要调试的所有信息

【讨论】:

    【解决方案4】:

    非常感谢,

    >>return list(a)
    TypeError: 'NoneType' object is not iterable
    

    我的输出应该在列表中 [1string, 12string, 123string] 现在我的代码是这样的:

    def spacey(array):
    pass
    e = ""
    i = ""
    m = []
    a = ''
    
    
    for e in list(array):
        a = print(e + i)
        i += e
    
    return list(a)
    

    【讨论】:

      【解决方案5】:

      mylist = ['This', 'is', 'myquestion', 'for', 'you']

      idx = 1
      for _ in range(len(mylist)):
          print(' '.join(mylist[0:idx]))
          idx += 1
      

      【讨论】:

      • 如果你删除单引号之间的空格,它将完全匹配你所追求的
      【解决方案6】:

      那是因为你的函数只返回最后一个元素。您可以将所有元素附加到列表中。

      def func(arr):
        e = "" 
        i = "" 
        m = []
        for e in arr:
          i += e
          m.append(i)
        return m
      
      func(['a', 'b', 'c', 'd', 'e'])
      

      输出:['a', 'ab', 'abc', 'abcd', 'abcde']

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-29
        • 2022-11-22
        • 1970-01-01
        相关资源
        最近更新 更多