利用列表来模拟堆栈。什么是堆栈?堆栈是一种执行”后进先出”算法的数据结构。在这里利用列表来模拟堆栈。
def push(char1, L): L.insert(0, char1) print(L) def pop(y, L): if len(L) == 0: print('Cannot pop from an empty list!') else: for i in range(int(y)): delete = L.pop(i-i) print(delete) L = [] char = input('请输入要测试的字符串: ') for i in range(len(char)): char1 = char[i] push(char1, L) for i, album in enumerate(L): print(i, album) y = input('请输入想删除的字母的个数: ') pop(y, L) print('经过删除后的列表为: ', L)在这里需要注意几点。首先是在插入时利用了L.insert(0, char1),为什么要这样用。我们知道堆栈是”后进先出”即”先进后出”因此最先出现的字母我们要把它放到后面,对于新来的字母我们利用L.insert(0, char1)把它放到列表的最前面。其次,在删除元素时要注意元素的下标,因为我们要删除列表中最前面的字母即下标为0的字母。因此我们在删除中要用delete= L.pop(i-i)在这里的循环中的i只能用来控制次数,不能当做下标!为什么?因为i开始等于0所以说我们第一次删除的时列表中最前面的元素,单进行第二次循环时i=1,此时删除的并不是最前面的元素而是最前面元素的后一个元素。因此要用i-i控制下。
请输入要测试的字符串: abcd ['a'] ['b', 'a'] ['c', 'b', 'a'] ['d', 'c', 'b', 'a'] 0 d 1 c 2 b 3 a 请输入想删除的字母的个数: 4 d c b a 经过删除后的列表为: [] 请输入要测试的字符串: abcd ['a'] ['b', 'a'] ['c', 'b', 'a'] ['d', 'c', 'b', 'a'] 0 d 1 c 2 b 3 a 请输入想删除的字母的个数: 2 d c 经过删除后的列表为: ['b', 'a']