Уведомления

Группа в Telegram: @pythonsu

#1 Июль 10, 2022 08:22:46

Tenshiqq
Зарегистрирован: 2022-07-10
Сообщения: 2
Репутация: +  1  -
Профиль   Отправить e-mail  

Убрать из списка все отрицательные числа и вывести список

Всем привет! Пытался написать такую простенькую функцию:

 a = [91, -32, 67, -4, -91, 63, 56, 40, -45, 72, 0]
def f(arr):
    for i in arr:
        if i<0:
            arr.remove(i)
    print(arr)
f(a)
И как бы она работает, но не совсем правильно. Если в списке идут два отрицательных числа подряд, то программа удалит первое, а второе оставит. Помогите

Отредактировано Tenshiqq (Июль 10, 2022 08:52:44)

Офлайн

#2 Июль 10, 2022 08:32:41

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Убрать из списка все отрицательные числа и вывести список

Оберните код в тег код



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#3 Июль 10, 2022 08:43:15

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Убрать из списка все отрицательные числа и вывести список

вот так



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Офлайн

#4 Июль 10, 2022 08:54:18

Tenshiqq
Зарегистрирован: 2022-07-10
Сообщения: 2
Репутация: +  1  -
Профиль   Отправить e-mail  

Убрать из списка все отрицательные числа и вывести список

Отредактировал

Офлайн

#5 Июль 10, 2022 08:56:12

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Убрать из списка все отрицательные числа и вывести список

Проблема в том что каждый раз в вашем цикле после удаления меняется сам список
выполните данный код что бы понять суть

 a = [1, -1, 2, -2, -3, -4, 3, 4, 5]
def f(arr):
    neg_list = []
    pos_list = []
    locarr = arr.copy()
    for i in locarr:
        if i <= 0:
            print(f"index:{arr.index(i)} ARR:{arr}")
            arr.remove(i)
            neg_list.append(i)
        else:
            pos_list.append(i)
    print(neg_list)
    print(pos_list)
    print(arr)
f(a)



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#6 Июль 10, 2022 09:08:24

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Убрать из списка все отрицательные числа и вывести список

тут такое дело у вас короче
во время прогона у вас arr меняется
вещь чреватая ошибками и неопределенностью
мне таких ошибок не пришлось делать ну по тому что лутц

 a = [91, -32, 67, -4, -91, 63, 56, 40, -45, 72, 0]
def f(arr):
    xz = []
    for i in arr:
        print()
        if i>=0:
            xz.append(i)
    print(xz)
f(a)
)
зы
не делай так как в этой цитате к
 print([a.remove(a[i]) for i in range(len(a)) if a[i] <= 0])

токашто у меня таже ошибка в представлении случилась Tenshiqq прикинь типа тут же беру и на ходу все не нужное удаляю (блин надо идти спать)
 b = a[:]
[b.remove(a[i]) or print(b) for i in range(len(a)) if a[i] < 0]




1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Июль 10, 2022 10:30:24)

Офлайн

#7 Июль 10, 2022 12:21:34

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10022
Репутация: +  857  -
Профиль   Отправить e-mail  

Убрать из списка все отрицательные числа и вывести список

  
>>> def f(arr):
...     i = len(arr)
...     while i > 0:
...         i -= 1
...         if arr[i] < 0:
...             del arr[i]
...     return arr
... 
>>> a = [91, -32, 67, -4, -91, 63, 56, 40, -45, 72, 0]    
>>> f(a)
[91, 67, 63, 56, 40, 72, 0]
>>>



Офлайн

#8 Июль 10, 2022 12:31:00

ZerG
Зарегистрирован: 2012-04-05
Сообщения: 2627
Репутация: +  61  -
Профиль   Отправить e-mail  

Убрать из списка все отрицательные числа и вывести список

py.user.next
ну del и pop все же не remove



Влодение рускай арфаграфией - это как владение кунг-фу: настаящие мастира не преминяют ево бес ниабхадимости

Офлайн

#9 Июль 10, 2022 17:58:26

marvellik
Зарегистрирован: 2016-05-15
Сообщения: 639
Репутация: +  73  -
Профиль   Отправить e-mail  

Убрать из списка все отрицательные числа и вывести список

 a = [91, -32, 67, -4, -91, 63, 56, 40, -45, 72, 0]
def f(arr):
    for i in range(len(arr))[::-1]:
        if arr[i] < 0:
            arr.remove(arr[i])
    print(arr)
f(a)

Офлайн

#10 Июль 10, 2022 20:29:25

xam1816
Зарегистрирован: 2020-05-11
Сообщения: 1395
Репутация: +  124  -
Профиль   Отправить e-mail  

Убрать из списка все отрицательные числа и вывести список

Tenshiqq
Убрать из списка все отрицательные числа и вывести список
  
def check_value(val):
    if val >= 0:
        return True
a = [91, -32, 67, -4, -91, 63, 56, 40, -45, 72, 0]
new_lst = [i for i in a if check_value(i)]
print(new_lst)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version