假设我有一个列表[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
我想同时从1到4和7到10删除。
是否可以在python中执行此操作,或者我一次只能删除一个范围?
答案 0 :(得分:1)
据我所知,您无法使用内置函数/库同时删除两个值。但是,您可以在一个衬里中实现这一点。一种方法是使用del
关键字删除条目:
>>> my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
# `del` from higher range to lower range
# v v
>>> del my_list[6:10], my_list[0:4]
>>> my_list
[5, 6]
答案 1 :(得分:1)
您的示例有另一种方法可以通过使用切片赋值在一个语句中获取结果:
my_list[:] = my_list[5:7]
但是,在一般情况下,不能同时删除多个范围。使用Python列表,您一次只能删除一个 slice 。
使用fancy indexing可以使用numpy数组。
答案 2 :(得分:1)
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> lst[:] = set(lst).difference(range(1, 5) + range(7, 11))
>>> lst
[5, 6]
答案 3 :(得分:-1)
create table #test(block varchar(50))
insert into #test values
('A-M-0000000359/10,11'), ('A-M-0000000359/10')
select substring(block, charindex('/', block)+1,
case when charindex(',', block) = 0 then
len(block)
else
(charindex(',', block)-1)-charindex('/', block)
end) finalValue
from #test
OUTPUT
----------
finalValue
10
10