如何将列表中的分隔符从“,”更改为“;”不使用联接功能或任何列表操作

时间:2019-02-16 01:13:30

标签: python

我必须设置一个从给定对象的内容返回字符串的方法。我可以使用数字列表的字符串,但是我的教授希望每个元素之间的分隔符是分号而不是逗号,这很难做到。我尝试使用join函数,但后来我意识到,教授除了追加以及读写索引外,不想使用任何lenin之类的列表操作。

我已经尝试将分号连接到字符串,但是,当然,只能将分号连接到字符串的末尾,并且不使用分号分隔每个元素。

这是我的代码

class LinkedList:
  def __init__(self, lst=[], size = 0):
    self.L = lst
    self.size = size
  def addLast(self, x):
    self.L.append(x)
    self.size += 1
  def removeFirst(self):
    L = self.L
    p = L[1:]
    return p
  def __str__(self):
    result = ''
    result += str(self.L)
    return result

使用它作为测试用例,您可以看到它以[1、2、3]而不是“ [1; 2; 3]”的形式打印出来

lst = LinkedList()
print(lst) # prints []
print(lst.size) # prints 0
lst.addLast(1)
lst.addLast(2)
print(lst.size) # prints 2
lst.addLast(3)
print(lst) # this should print "[1;2;3]"

1 个答案:

答案 0 :(得分:0)

使用循环来连接列表元素,在每个列表元素之间附加;

def __str__(self):
    result = '['
    if self.size > 0:
        result += str(self.L[0]) # print first element normally
        for item in self.L[1:]: # print the rest, preceding each with ';'
            result += ';' + str(item)
    result += ']'
    return result

如果不允许使用for-in,则可以使用while循环。

def __str__(self):
    result = '['
    if self.size > 0:
        result += str(self.L[0]) # print first element normally
        i = 1
        while i < self.size
            result += ';' + str(self.L[i])
            i += 1
    result += ']'
    return result