簡體   English   中英

從python中的列表中刪除一個位置到另一個位置元素

[英]Deleting one position to another position elements from list in python

我有一個如下所示的列表,我想刪除任何單詞(包括)和下一個'0' (不包括)之間的所有條目。

所以例如這個列表:

array = ['1', '1', '0', '3', '0', '2', 'Continue', '1', '5', '1', '4', '0', '7', 'test', '3', '6', '0']

應該變成:

['1', '1', '0', '3', '0', '2', '0', '7', '0']
array = ['1', '1', '0', '3', '0', '2', 'Continue', '1', '5', '1', '4', '0', '7', 'test', '3', '6', '0']

res = []
skip = False      #Flag to skip elements after a word
for i in array:
    if not skip:
        if i.isalpha():   #Check if element is alpha
            skip = True
            continue
        else:
            res.append(i)
    else:
        if i.isdigit():   #Check if element is digit
            if i == '0':
                res.append(i)
                skip = False

print res

輸出:

['1', '1', '0', '3', '0', '2', '0', '7', '0']

踢它老派-

array = ['1', '1', '0', '3', '0', '2', 'Continue', '1', '5', '1', '4', '0', '7', 'test', '3', '6', '0']
print(array)
array_op = []
i=0
while i < len(array):
    if not array[i].isdigit():
        i = array[i:].index('0')+i
        continue
    array_op.append(array[i])
    i += 1
print(array_op)

您也可以通過專門使用list comprehension來做到這一點:

array = ['1', '1', '0', '3', '0', '2', 'Continue', '1', '5', '1', '4', '0', '7', 'test', '3', '6', '0']

# Find indices of strings in list
alphaIndex = [i for i in range(len(array)) if any(k.isalpha() for k in array[i])] 

# Find indices of first zero following each string
zeroIndex = [array.index('0',i) for i in alphaIndex] 

# Create a list with indices to be `blacklisted`
zippedIndex = [k for i,j in zip(alphaIndex, zeroIndex) for k in range(i,j)] 

# Filter the original list
array = [i for j,i in enumerate(array) if j not in zippedIndex] 

print(array)

輸出:

['1', '1', '0', '3', '0', '2', '0', '7', '0']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM