1

我在Andrew N. Harrington 的动手 Python 教程中找到“加入所有练习”的解决方案时遇到了一些麻烦。

基本上,练习是获取一个['very', 'hot', 'day']仅由字符串组成的列表,并从中制作一个字符串,在这种情况下'veryhotday'

这是练习

'''exercise to complete and test this function'''
def joinStrings(stringList):
    '''Join all the strings in stringList into one string,
    and return the result, NOT printing it. For example:
    >>> s = joinStrings(['very', 'hot', 'day'])
    >>> print(s)  # I can print s OUTSIDE joinStrings
    'veryhotday'
    '''
    # finish the code for this function

def main():
    print(joinStrings(['very', 'hot', 'day']))
    print(joinStrings(['this', 'is', 'it']))
    print(joinStrings(['1', '2', '3', '4', '5']))

main()

所以只有第一个定义可以改变。我是这样解决的:

def joinStrings(stringList):
    return ''.join(stringList)

我相信这是有效的并且是正确的。如果我在这里错了,请纠正我,但问题是它必须以不同的方式解决。我必须累积不同的字符串。就像他们在这里用整数显示的那样:

def sumList(nums):
    ’’’Return the sum of the numbers in the list nums.’’’
    sum = 0
    for num in nums:
        sum = sum + num
    return sum

真的我无法弄清楚,所以请帮助我!

4

2 回答 2

2

''.join(stringList)是正确的方法。问题是什么?

如果必须以不同的方式完成,您可以执行以下操作之一:

import operator
return reduce(operator.add, stringList)

甚至

s = ''
for string in stringList:
    s = s + string
return s

但这是不必要的复杂性,因为join按照您的建议使用是最简单和首选的方式。应该也是最快的。

于 2012-09-12T16:41:46.623 回答
2

看看str.join()方法

''.join(['a','b','c']) # 'abc'
' '.join(['a','b','c']) # 'a b c'
print ' are '.join(['how', 'you']) # > how are you
s = ''.join(['%d'%i for i in range(10)]) # 01234567789

str.join()函数不打印任何内容,它只是从字符串列表中创建一个新字符串。

于 2012-09-12T16:42:22.837 回答