从列表中删除项目时分号的功能

2024-04-25 14:02:06 发布

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

我有一个这样的列表,我想删除("poolhouse", 24.5)

当我使用分号时,它只删除字符串。我不知道为什么。它不应该删除我在括号里提到的数字吗

两个字符串被删除[10][12]

我想知道分号的作用

areas = ["hallway", 11.25, "kitchen", 18.0,  "chill zone", 20.0, "bedroom",
         10.75, "bathroom", 10.50, "poolhouse", 24.5, "garage", 15.45]
del(areas[10]); del(areas[11])
print(areas)

输出:

['hallway', 11.25, 'kitchen', 18.0, 'chill zone', 20.0, 'bedroom', 10.75,
 'bathroom', 10.5, 24.5, 15.45]

Tags: 字符串zone列表数字括号printdelgarage
2条回答

删除索引10处的项时,索引10之后的所有项都上移。将其更正为:

del areas[10], areas[11]

或者使用列表中的remove方法:

for i in ("poolhouse", 24.5): areas.remove(i)

分号只是将两个语句放在一行上的一种方式,但通常不会改变程序的行为

正如其他人指出的,删除索引[10]处的元素会导致下面所有元素的索引下移一位,因此任何后续操作都必须相应地调整它们指定的任何索引

一次删除两个(或多个)连续元素的另一种方法通常更简单、更快,方法是使用slice符号指定索引范围,并在一次操作中删除所有索引

areas = ["hallway", 11.25, "kitchen", 18.0,  "chill zone", 20.0, "bedroom",
         10.75, "bathroom", 10.50, "poolhouse", 24.5, "garage", 15.45]
del areas[10:12]  # selects elements 10->11 for deletion
print(areas)

输出:

['hallway', 11.25, 'kitchen', 18.0, 'chill zone', 20.0, 'bedroom', 10.75,
 'bathroom', 10.5, 'garage', 15.45]

表达式areas[10:12]表示从索引10开始的元素,这些元素的索引小于 比最后一个数12-在这个例子中,原始列表中分别是areas[10]areas[11]

相关问题 更多 >