[英]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'
幾點:
my_string
函數內部使用sep
。 sep
my_
開頭的名稱,這應該是有意義的。 為什么不使用join_list
作為函數,為什么不join_list
l
或arr
甚至是_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.