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