我需要创建一个将列表和分隔符值作为参数的函数,并返回由分隔符值分隔的列表的字符串表示形式。
我只能使用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)
答案 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'
几点:
sep
中使用my_string
。sep
my_
开头的名称,这应该是有意义的。为什么不使用join_list
作为函数,而不使用l
或arr
甚至是参数_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)