Удалите пробелы после типа файла:
dlg.Filter = "Растровое изображение (.bmp) | * .bmp | Gif Image (.gif) | * .gif | JPEG Изображение (.jpeg) | * .jpeg | Png Изображение (.png) | * .png | Tiff Image (.tiff) | * .tiff | Wmf Image (.wmf) | * .wmf ";
Вы можете использовать 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
>>>
Это не обеспечивает решение проблемы шаблона F_ BF, но оно затрагивает проблему, когда python не возвращает список при использовании .reverse ().
Вот как я получил вокруг него:
chars = ['a', '-', 'c']
chars2 = [] + chars
chars2.reverse()
totalChars = chars + chars2
totalChars возвращает a-cc-a, чего я хотел, AND chars2 - это список, а не указатель на символы. Надеюсь, это поможет.
Я только что наткнулся на эту проблему и хотел уточнить некоторые вещи для пользователей, новых для 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())
Чтобы использовать ответ 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]
Возможно, это другой вопрос.
Не супер красиво, но я не нашел эквивалента в ответах на прецеденты. Если затраты на скорость или память низки (список не очень длинный или операция не повторяется очень много раз), это довольно прямолинейно и даже легче читать.
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))))
Приветствия
list.reverse меняет место. То есть:
>>> l = [1, 2, 3]
>>> l.reverse()
>>> l
[3, 2, 1]
Обратитесь к документации Python , такие вещи, как эти, выложены там. Вы также можете попробовать встроенную функцию «help»:
help (l.reverse) Справка по встроенной функции reverse:
< / blockquote> blockquote> blockquote>reverse (...) L.reverse () - reverse IN PLACE
blockquote>
Вы можете использовать нарезку, чтобы вернуть перевернутый список:
l[::-1]
list(reversed(formation))
. Но вы, скорее всего, придете с других языков, и скоро узнаете, что Python не хочет создавать кучу подобных методов только ради однострочного интерфейса :) – rbp 25 November 2010 в 21:48list(reversed(formation))
это лучше :) – nakiya 25 November 2010 в 21:49