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

时间:2016-06-24 02:43:36

标签: python list

我有一个这样的列表,我想删除[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]

输出:

ode2

2 个答案:

答案 0 :(得分:2)

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

正如其他人所指出的那样,删除索引[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 - 所以在这种情况下{{1}原始列表中分别有}和areas[10]

答案 1 :(得分:1)

当您删除索引10处的项目时,索引10之后的所有项目都会向上移动。要么纠正这个:

del areas[10], areas[11]

或使用列表中的remove方法:

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