簡體   English   中英

Python:帶列表和分隔符並返回字符串的函數

[英]Python: Function that takes a list and a separator and returns a string

我需要創建一個函數,該函數將列表和分隔符值作為參數,並返回由分隔符值分隔的列表的字符串表示形式。

我可以使用的唯一內置函數是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)

您可以在沒有任何內置功能的情況下進行操作:

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所說 ,您應該在my_string函數內部使用sep
  • 如果它是默認值,則無需傳遞sep
  • 就個人而言,我不喜歡以my_開頭的名稱,這應該是有意義的。 為什么不使用join_list作為函數,為什么不join_list larr甚至是_list作為參數呢?

保持簡單,將除了最后一個單詞之外的所有內容連接起來,然后在最后添加最后一個單詞:

# 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) ,但在現實世界中,您sep.join(my_list)使用sep.join(my_list)

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'

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

使用任何可以通過內置str()轉換的類型

很簡單,您可以使用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) 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM