Python:带列表和分隔符并返回字符串的函数

时间:2018-11-13 08:04:22

标签: python

我需要创建一个将列表和分隔符值作为参数的函数,并返回由分隔符值分隔的列表的字符串表示形式。

我只能使用range()str()内置函数,而没有任何切片表达式,列表方法或字符串方法。

我整理了一些代码,但我知道这是不对的,因为它在开头显示一个空格,在结尾显示分隔符(分隔符只需要在值之间)。

我该如何解决?

def my_string(my_list, sep=', '):
    string = " "

    for words in my_list:
        string += words + ', '     

    return string

my_list = ["item1", "item2", "item3", "item4"]
list_string = my_string(my_list, sep=', ')
print (list_string)

4 个答案:

答案 0 :(得分:4)

您可以在没有任何内置功能的情况下进行操作:

def my_string(my_list, sep=', '):
    result = ''

    # Safety check
    if not my_list:
        return result

    idx = 0
    for word in my_list:
        # Add the seperator before every item but the first one
        result += (sep if idx else '') + word
        idx += 1

    return result

my_list = ["item1", "item2", "item3", "item4"]
list_string = my_string(my_list)
print (list_string)  # >>> 'item1, item2, item3, item4'

几点:

  • 作为RoadRunner said,您应该在函数sep中使用my_string
  • 如果它是默认值,则无需传递sep
  • 我个人不喜欢以my_开头的名称,这应该是有意义的。为什么不使用join_list作为函数,而不使用larr甚至是参数_list

答案 1 :(得分:2)

保持简单,将除最后一个单词之外的所有内容连接起来,然后在最后添加最后一个单词:

# Calculates the length of a list
def my_len(my_list):
    length = 0

    for _ in my_list:
        length += 1

    return length

def my_string(my_list, sep=', '):
    string = ""
    length = my_len(my_list)

    # Loop through indices except last
    for i in range(length - 1):
        string += my_list[i] + sep

    # Add last item on
    string += my_list[i+1]

    return string

my_list = ["item1", "item2", "item3", "item4"]
list_string = my_string(my_list, sep=', ')
print (list_string)
# item1, item2, item3, item4

注意:由于您的需求看来您无法使用len(),因此您需要创建自己的自定义函数my_len()

即使这可行,但在现实世界中,您仍想使用sep.join(my_list)

答案 2 :(得分:0)

def my_string(my_list, separator=", "):
    string = ""
    disp_separator = False
    for i in my_list:
        string += separator if disp_separator else "" # don't display the separator the first time
        string += str(i)
        disp_separator = True
    return string

输入:my_string(["item1", "item2", "item3", "item4"])
输出:'item1, item2, item3, item4'

input:my_string([1, 2, 3, 4], separator=' | ')
输出:'1 | 2 | 3 | 4'

与任何可以通过内置str()转换的类型一起使用

答案 3 :(得分:-4)

很简单,您可以使用python中的内置函数'join'。

def my_string(my_list, sep=', '):
    return sep.join(my_list)

my_list = ["item1", "item2", "item3", "item4"]
list_string = my_string(my_list, sep=', ')
print (list_string)