python - 无法删除列表中的最后一项,[-1] 不起作用?
问题描述
第 30 行:'new_2.remove(new_2[-1])' 这意味着删除列表中的最后一个字母(这将是末尾的 's',因为我想删除数字时的 's'在它是'1'之前,因为,你知道,语法。但它删除了第一个's',即使我通过[-1]删除了最后一项。其他一切都在工作,但我不知道为什么它正在删除最后一个's'而不是第一个?!
import random
import time
will = ['No', 'Yes', 'Maybe', 'Probably not', 'Probably', 'Definitely not', 'Definitely']
time_1 = ['1']
time_2 = ['days', 'seconds', 'years', 'weeks', 'minutes', 'months']
def listToString(str_in):
str1 = ""
for x in str_in:
str1 += x
return str1
print("Enter a question starting\nwith 'when' or 'will' to shake 8 ball\n"
'0 to exit\n')
while True:
kb_in = input(': ').lower().strip()
print('\nShaking...\n')
time.sleep(0.6)
if kb_in == '0':
print('bye'); exit()
elif 'when' in kb_in:
new = random.choice(time_1)
if new == '1':
print(new, end = ' ')
new_1 = random.choice(time_2)
new_2 = list(new_1)
new_2.remove(new_2[-1]) # not taking last 's' out of 'seconds' ??
print(listToString(new_2), '\n')
else:
print(f'{new} {random.choice(time_2)}\n')
elif 'will' in kb_in and 'when' not in kb_in:
print(random.choice(will))
else:
print("\nInput does not contain 'will' or 'when'\n")
解决方案
list.remove
删除第一次出现的值。
所以要实现你想要的,你可以替换
new_2.remove(new_2[-1])
和
new_2 = new_2[:-1]
这会将列表分成倒数第二个值。
你也可以做
new_2.pop()
这将删除列表的最后一个值。
推荐阅读
- javascript - 设置间隔函数为上一个参数提供输出
- swift - SwiftUI 将来自 Apollo 查询的数据显示到列表中
- html - 是否可以仅将 CSS 应用于第一个释义的第一个字母,但前提是释义第一个子项是文本与跨度等元素?
- angular - RXJS: Combining multiple calls from foreach into a single observable
- python - regex to highlight new line characters in the beginning and end
- c++ - How to read STRING TABLE resources for given language into map
- python - 如何将参数传递给具有变体参数的python函数?
- java - 为什么发布请求接受查询字符串参数?
- flutter - 做两个圆角和两个直切而不是颤动的曲线
- java - Vert.x 从 TCP 的部分字节读取