【发布时间】:2021-02-12 11:57:08
【问题描述】:
我有一个表达式列表,在一个名为 literals 的数组中:
literals = ['-PacketAt(A)', '+CarAt(B)', '-CarAt(A)', '-PacketInCar', '+PacketAt(B)', '+CarAt(A)', 'LoadA', '+PacketAt(A)', '+PacketInCar', 'LoadB', '-PacketAt(B)', 'DriveAB', '-CarAt(B)', 'DriveBA', 'ProduceA', 'DischargeA', 'DischargeB']
我想删除数组中不以+ 和- 符号开头的元素。
我写了以下内容来尝试这样做:
for literal in literals:
if not (literal.startswith('-')) and not (literal.startswith('+')):
literals.remove(literal)
但是,在我运行这个 for 循环之后,我收到以下输出:
literals = ['-PacketAt(A)', '+CarAt(B)', '-CarAt(A)', '-PacketInCar', '+PacketAt(B)', '+CarAt(A)', '+PacketAt(A)', '+PacketInCar', '-PacketAt(B)', '-CarAt(B)', 'ProduceA', 'DischargeB']
想要的输出是:
literals = ['-PacketAt(A)', '+CarAt(B)', '-CarAt(A)', ' -PacketInCar', '+PacketAt(B)',
'+CarAt(A)', '+PacketAt(A)', '+PacketInCar', '-PacketAt(B)', 'DriveAB', '-CarAt(B)']
据此,'ProduceA' 和 'DischargeB' 不应出现在称为 literals 的列表中,但它们确实存在。为什么会这样,我怎样才能修改我的代码以使它们不出现?这是我提供的一些可运行的测试代码:
literals = ['-PacketAt(A)', '+CarAt(B)', '-CarAt(A)', ' -PacketInCar', '+PacketAt(B)',
'+CarAt(A)', 'LoadA', '+PacketAt(A)', '+PacketInCar', 'LoadB', '-PacketAt(B)', 'DriveAB', '-CarAt(B)', 'DriveBA', 'ProduceA', 'DischargeA', 'DischargeB']
for literal in literals:
if not (literal.startswith('-')) and not (literal.startswith('+')):
literals.remove(literal)
print(literals)
以及运行它的在线 Python IDE:https://www.programiz.com/python-programming/online-compiler/
【问题讨论】:
标签: python arrays string for-loop