def函数中的空列表(列表索引超出范围)

2024-09-23 22:32:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我不明白为什么def函数中没有使用我的列表。我假设它是空的,因为输出,但为什么

def check_palind(x):
    palind = []
    actual_palind = []
    palind = [int(i) for i in str(x)] 
    while palind[0] == palind[-1] and len(palind) % 2 == 0:
        print(palind,'is still a palindrome')
        print('removing',palind.pop(0))
        print('removing',palind.pop(-1))
        actual_palind.append(x)
        actual_palind = set(actual_palind)
        actual_palind = list(actual_palind)
    else:
        actual_palind = []

    return actual_palind
check_palind(900009)

产出:

while palind[0] == palind[-1] and len(palind) % 2 == 0:

IndexError: list index out of range

Tags: and函数列表forlendefcheckpop
1条回答
网友
1楼 · 发布于 2024-09-23 22:32:14
In [19]: def check_palind(x):
    ...:     palind = []
    ...:     actual_palind = []
    ...:     palind = [int(i) for i in str(x)]
    ...:     while palind and palind[0] == palind[-1] and len(palind) % 2 == 0:
    ...:         print(palind,'is still a palindrome')
    ...:         print('removing',palind.pop(0))
    ...:         print('removing',palind.pop(-1))
    ...:         actual_palind.append(x)
    ...:         actual_palind = set(actual_palind)
    ...:         actual_palind = list(actual_palind)
    ...:     else:
    ...:         actual_palind = []
    ...:
    ...:     return actual_palind
    ...:

In [20]: check_palind(900009)
[9, 0, 0, 0, 0, 9] is still a palindrome
removing 9
removing 9
[0, 0, 0, 0] is still a palindrome
removing 0
removing 0
[0, 0] is still a palindrome
removing 0
removing 0
Out[20]: []

相关问题 更多 >