Palindrome python很奇怪

时间:2017-04-05 01:47:18

标签: python

array='abcdcba'
array=list(array)
palindrome=[]

for x in range (0,len(array)):
    list1 = []
    list1.append(array[x])
    for y in range(x+1,len(array)):
        list1.append(array[y])
        list2=list1[::-1]
        if list1==list2:
            palindrome.append(list1)
print(palindrome)

我试图找到给定字符串中的回文,并且我遇到了奇怪的行为。

当我找到回文bcdcb时,我将列表附加到回文数组中。 然后,当我在下一次迭代中向list1追加一个新值时,该值也会附加到回文列表中;把它变成bcdcba

cdc也是如此;它将其打印为cdcba。

我得到的输出是:

[['a', 'b', 'c', 'd', 'c', 'b', 'a'], ['b', 'c', 'd', 'c', 'b', 'a'], ['c', 'd', 'c', 'b', 'a']]

2 个答案:

答案 0 :(得分:1)

一个常见问题:您只有一个列表list1对象(直到用list1 = []重新初始化它)。为了确保您不会修改您找到的回文,请在添加list1之前先复制list1,这样当您稍后修改array='abcdcba' array=list(array) palindrome=[] for x in range (0,len(array)): list1 = [] list1.append(array[x]) for y in range(x+1,len(array)): list1.append(array[y]) list2=list1[::-1] if list1==list2: palindrome.append(list1[:]) # copy list1 print(palindrome) 该副本获胜时#&# 39;改变:

{a: 1, b: 2}.fetch_values(:a, :b)
# => [1, 2]
{a: 1, b: 2}.fetch_values(:a, :c)
# => KeyError: key not found: :c

答案 1 :(得分:-1)

这是我实现这一目标的方法:

w = input("Type in a word. ")
wL = []
for y in w:
    wL.append(y)
print(wL)
if (wL[::] == wL[::-1]:
    print("This is a palindrome")
else:
    print("This is not a palindrome")