【问题标题】:python insert not inserting at the correct positionpython插入没有插入正确的位置
【发布时间】:2021-03-24 17:28:17
【问题描述】:

我正在尝试使用 python 的插入来查找数字的回文。这是我的功能:

def isPalindrome(x):
        n = []
        l = len(str(x)) - 1
        for i in str(x):
            print(l, ":", i)
            n.insert(l,i)
            l -= 1
        print(n)

数字 121 的输出:

2 : 1
1 : 2
0 : 1
['1', '1', '2']

我打印出索引值组合应该是什么...那么打印的数组为什么会显示 ['1', '1', '2'],而不是预期的 ['1', '2' , '1']?

【问题讨论】:

  • 您是否要查找特定字符串的回文?你可以试试这个print("121"[::-1])
  • 好的,谢谢!但我仍然想知道为什么我的插入方法没有在正确的索引处插入数字。
  • 哦,好吧,但如果您想在我的示例中将字符串放在列表中,您可以试试这个 output = [s for s in "ana"[::-1]] 。嗯……好吧好吧
  • 你能不能改成n.append(i),因为.insert()所做的是inserting你的i的值到l的位置,不管它的值是什么。

标签: python arrays list indexing


【解决方案1】:

list.insert() 不会在列表中为您创建职位。它会在最后插入。您正试图在空列表的位置 2 中插入一些东西。它将改为追加到列表中,因此插入实际上是位置 0。

>>> l = []
>>> l.insert(2, "X")
>>> l
['X']

【讨论】:

    【解决方案2】:

    您创建了一个长度为零的空数组 n。然后您尝试在位置 2 处插入第一个数字“1”,这在空数组中不存在。然后将第二个数字“2”放在位置 1(数组的末尾)。然后是位置 0(数组的开头)的最后一个数字“1”。

    [], ['1'], ['1','2'], ['1','1','2']
    

    如果您尝试以相反的顺序创建数字数组。您需要将每个数字添加到数组的开头。

    n.insert(0, i)
    

    在位置 0 ['1'] 处插入第一个数字“1”,然后在 0 ['2','1'] 处插入第二个数字,然后在开头 ['1','2',' 处插入最后一个数字1']。或者你可以只使用这个函数。

    def isPalindrome(s):
        s = str(s)
        return s == s[::-1]
    

    【讨论】:

      【解决方案3】:

      只需在函数的开头设置 l = 0,这样您就可以从开头而不是结尾推送元素。

      【讨论】:

        猜你喜欢
        • 2018-04-14
        • 1970-01-01
        • 1970-01-01
        • 2019-12-09
        • 2015-04-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多