Python中的数组与列表

时间:2018-06-05 09:46:56

标签: python python-3.x

我试图理解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()方法,但没有用,结果也一样。

4 个答案:

答案 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中,您只能存储 相同的数据类型(同质)。

  • 数组功能丰富且快速,被广泛用于 算术运算并用于存储大量数据- 与列表相比。

  • 与列表相比,数组占用的内存更少。