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']]
答案 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")