my_list = [0,1,2,3,4,5,6,7,8,9,10]
for k in my_list:
if k > 6:
#delete k
특정 값보다 큰 경우 목록에서 k
을 어떻게 삭제합니까?for-loop의 목록에서 삭제하십시오. Python
my_list = [0,1,2,3,4,5,6,7,8,9,10]
for k in my_list:
if k > 6:
#delete k
특정 값보다 큰 경우 목록에서 k
을 어떻게 삭제합니까?for-loop의 목록에서 삭제하십시오. Python
목록 이해를 사용할 수 있습니다.
k = [i for i in k if i <= 6]
또는 filter
k = filter(lambda x: x <= 6, k)
위의 두 가지 옵션이 같은 일을 할 것입니다 (주 파이썬 3에서 당신은 목록에 변환 할 수있는 filter
개체를 반환합니다).
:
my_list = [k for k in my_list if k <= 6]
이 시도,
>>> my_list= [i for i in my_list if i <= 6]
>>> print my_list
[0, 1, 2, 3, 4, 5, 6]
>>>
요소를 제거하려면 list
에서 remove
메서드를 사용할 수 있습니다. 그러나 list
을 반복하면서 요소를 제거하면 정의되지 않은 동작이 발생한다는 점을 고려해야합니다. 예를 들어 :
>>> L = [1,2,3,4,5]
>>> for x in L:
... L.remove(x)
...
>>> L #should be empty
[2, 4]
이러한 문제가 발생하지 않도록하려면 당신이 목록-이해를 사용하여 새 list
을 만들거나 단순히 목록의 사본을 반복 할 수 있습니다 :
>>> L = range(10)
>>> [x for x in L if x <= 6]
[0, 1, 2, 3, 4, 5, 6]
>>> for x in L[:]:
... if x > 6:
... L.remove(x)
...
>>> L
[0, 1, 2, 3, 4, 5, 6]
나는 시작할 것이다 말 루프는 인덱스를 이동하지 않습니다 :
my_list = [0,1,2,3,4,5,6,7,8,9,10]
for k in my_list[::-1]:
if k > 6:
del k
당신이 지정된 값보다 큰 목록의 모든 요소를 삭제합니다. 정렬 및 분할을 사용할 수 있습니다.
I 정렬하지 않고 세트를 사용하거나 제거하거나 저쩌구 ... 제안 : P
a = [3,1,2,4,5,6,8,9,0,7]
다음 종류의
a = a.sort() #a = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
idx = a.index(6) #idx=6
다음 슬라이스
a = a[0:idx] # a = [0, 1, 2, 3, 4, 5]
또는 대안 사용 set
. 예를 들어 사용자가 지정한 한계 range
당신이 다음
rm = xrange(4,8+1)
a = list(set(a) - set(rm)) # a = [0, 1, 2, 3, 9]
또한'slice' 또는'set'를 사용하여'for' 루프를 사용하여 피할 수
4 to 8
에서 모든 요소를 제거 할 사용하여 다른 목록을 만들 수 있습니다. – Thiru