我试图理解python中数组和列表之间的基本区别。我在python中为Palindrome字符串检查编写了一个示例代码。我试图理解它为什么不起作用。这里我将字符串参数与list参数进行比较。
任何人都可以解释为什么下面的代码输出错误了吗?
class Palindrome:
@staticmethod
def is_palindrome(word):
i = 0
l = len(word)
rev = []
print(l)
while l > 0:
rev.insert(i, word[l - 1])
i = i + 1
l = l - 1
if rev == word:
print(test)
print(word)
return True
else:
print(rev)
print(word)
return False
print(Palindrome.is_palindrome('tatat'))
上述代码的输出:
$python main.py
5
['t', 'a', 't', 'a', 't']
tatat
False
还有一件事是,为什么要打印数组值,如 [' t',' a'''',&# 39; a'' t'] 而不是 tatat 我也试过了append()方法,但没有用,结果也一样。
答案 0 :(得分:2)
您正在将字符插入列表中,其最终结果仍然是列表,并且显式不是字符串;这就是为什么你的回文测试会返回False
,因为你比较的是['t', 'a', 't', 'a', 't'] == 'tatat'
。
如果您想要正确执行此操作,则需要将rev
声明为空字符串并附加到其中。
rev = ''
for i in range(len(word)):
rev += word[len(word) - i]
答案 1 :(得分:1)
您正在将string
(您的单词输入)与list
个字符进行比较。在将您的角色与原始string
进行比较之前,您必须将str.join()
个角色加入string
。
答案 2 :(得分:0)
我不知道为什么人们会在这里作出反应。如果有人来这里寻求帮助,我们应该帮助他(如果可以的话),或者至少不要劝阻他。我的问题出了什么问题?如果有任何错误,请以平稳的方式告诉我而不是完全攻击。我们在这里学习并共同成长。 无论如何,这是我在上面发布的问题的解决方案:
class Palindrome:
@staticmethod
def is_palindrome(word):
i= 0
l= len(word)
rev = ""
print(l)
while(l>0):
rev += word[l - 1]
l = l-1
i =i+1
if (rev == word):
print(rev)
print(word)
return True
else:
print(rev)
print(word)
return False
print(Palindrome.is_palindrome('tatat'))
答案 3 :(得分:0)
我认为以下答案将总结有关List和Array之间差异的几乎所有查询:
这两种数据类型之间的主要区别是操作 您可以对它们进行表演。例如,您可以将数组除以3 它将数组的每个元素除以3。无法完成相同操作 与列表。
该列表是python语法的一部分,因此它不必是 声明,而您必须在使用它之前声明它。
您可以在列表中存储不同数据类型的值 (异构),而在Array中,您只能存储 相同的数据类型(同质)。
数组功能丰富且快速,被广泛用于 算术运算并用于存储大量数据- 与列表相比。
与列表相比,数组占用的内存更少。