Почему функция reverse () не работает при передаче вместе со списком в numpy.array ()? [Дубликат]

Удалите пробелы после типа файла:

  dlg.Filter = "Растровое изображение (.bmp) | * .bmp | Gif Image (.gif) | * .gif | JPEG Изображение  (.jpeg) | * .jpeg | Png Изображение (.png) | * .png | Tiff Image (.tiff) | * .tiff | Wmf Image (.wmf) | * .wmf ";   
13
задан nakiya 25 November 2010 в 21:39
поделиться

7 ответов

Вы можете использовать reversed(formation) для возврата обратного итератора formation. Когда вы вызываете formation.reverse(), он делает разворот списка и возвращает None.

EDIT:

Я вижу, что вы пытаетесь сделать сейчас, по-моему, проще всего сделать это со списком:

def solution(formation):
    return len([k for k in formation[formation.index(bCamel)+1:] if k == fCamel]) == 0

Это в основном рассматривает все элементы после первого bCamel и собирает все элементы, которые имеют значение fCamel. Если этот список имеет длину == 0, у вас есть решение.

Вот несколько примеров:

>>> k = ['F','F','B','B','F']
>>> solution(k)
False
>>> k = ['F','F','B','B','B']
>>> solution(k)
True
>>> k = ['F','F','B','F','F','B','B']
>>> solution(k)
False
>>> 
18
ответ дан GWW 17 August 2018 в 11:54
поделиться
  • 1
    Это не будет работать на немодифицированном коде OP, так как «обратный» не возвращает список, а итератор (который не имеет метода «индекс»). – rbp 25 November 2010 в 21:43
  • 2
    Да, я вспомнил об этом и скорректировал свой комментарий. Ему определенно придется немного изменить свой код, чтобы заставить его работать так, как он хочет. – GWW 25 November 2010 в 21:44
  • 3
    Я это понимаю. Но было бы гораздо разумнее, если бы он вернул обратный объект (это? Или что вы называете его в python?) Тоже правильно? Есть ли другая функция, которая делает это? В противном случае у меня будет еще пара строк :( – nakiya 25 November 2010 в 21:46
  • 4
    Если вы абсолютно должны держать его в одной строке, вы можете использовать что-то вроде list(reversed(formation)). Но вы, скорее всего, придете с других языков, и скоро узнаете, что Python не хочет создавать кучу подобных методов только ради однострочного интерфейса :) – rbp 25 November 2010 в 21:48
  • 5
    list(reversed(formation)) это лучше :) – nakiya 25 November 2010 в 21:49

Это не обеспечивает решение проблемы шаблона F_ BF, но оно затрагивает проблему, когда python не возвращает список при использовании .reverse ().

Вот как я получил вокруг него:

chars = ['a', '-', 'c']
chars2 = [] + chars
chars2.reverse()
totalChars = chars + chars2

totalChars возвращает a-cc-a, чего я хотел, AND chars2 - это список, а не указатель на символы. Надеюсь, это поможет.

0
ответ дан Alison Stuart 17 August 2018 в 11:54
поделиться

Я только что наткнулся на эту проблему и хотел уточнить некоторые вещи для пользователей, новых для python, исходящих из фона javascript.

В javascript a.reverse () меняет местами и также возвращает массив, когда

Javascript:

var a = [2, 3 ,4]
console.log(a.reverse())
// outputs [4, 3, 2]

В python a.reverse () меняет место на место, но не возвращает массив. Вот что вызвало путаницу для меня.

В python:

a = [2, 3, 4]
a.reverse()
print(a)
# outputs [4, 3, 2]
# can't do print(a.reverse())
1
ответ дан Cisco G 17 August 2018 в 11:54
поделиться

Чтобы использовать ответ GWW, если вы хотите, чтобы этот код работал так, как вы это делали, просто list(reversed(formation)). Если вы действительно хотите использовать formation.reverse() вместо этого, вам придется подкласс list:

>>> class ReversableList(list):
...     def reverse(self):
...         return list(reversed(self))
... 
>>> x = ReversableList([1,2,3])
>>> x.reverse()
[3, 2, 1]

Возможно, это другой вопрос.

5
ответ дан Jason Baker 17 August 2018 в 11:54
поделиться

Не супер красиво, но я не нашел эквивалента в ответах на прецеденты. Если затраты на скорость или память низки (список не очень длинный или операция не повторяется очень много раз), это довольно прямолинейно и даже легче читать.

import copy

fCamel = 'F'
bCamel = 'B'
gap = ' '

k = ['F', ' ', 'B', 'F']

def solution(formation):
    rev_formation = copy.copy(formation)
    rev_formation.reverse()
    return ((formation.index(bCamel) > (len(formation) - 1 -
            (rev_formation).index(fCamel))))

Приветствия

0
ответ дан Morlock 17 August 2018 в 11:54
поделиться

list.reverse меняет место. То есть:

>>> l = [1, 2, 3]
>>> l.reverse()
>>> l
[3, 2, 1]

Обратитесь к документации Python , такие вещи, как эти, выложены там. Вы также можете попробовать встроенную функцию «help»:

help (l.reverse) Справка по встроенной функции reverse:

< / blockquote>

reverse (...) L.reverse () - reverse IN PLACE

4
ответ дан rbp 17 August 2018 в 11:54
поделиться

Вы можете использовать нарезку, чтобы вернуть перевернутый список:

l[::-1]
15
ответ дан ShadowRanger 17 August 2018 в 11:54
поделиться
  • 1
    было бы здорово, если бы поставил наконец "l = [...] / print (l) / print (l [:: - 1]" – Gabriel Ciubotaru 27 July 2015 в 12:53
  • 2
    Это реальный ответ на этот вопрос. Он возвращает обратный список на месте, поэтому вы можете сделать это внутри понимания списка. – David Ellis 29 July 2016 в 02:46
Другие вопросы по тегам:

Похожие вопросы: