У меня есть стандартная программа, которая берет список строк в качестве параметра, но я хотел бы поддерживать передачу в единственной строке и преобразование его к списку одной строки. Например:
def func( files ):
for f in files:
doSomethingWithFile( f )
func( ['file1','file2','file3'] )
func( 'file1' ) # should be treated like ['file1']
Как моя функция может сказать, были ли строка или список переданы в? Я знаю, что существует a type
функция, но там "больше pythonic" путь?
Ну, нет ничего unpythonic о проверке типа. Однако если Вы готовы поместить маленькую нагрузку на вызывающую сторону:
def func( *files ):
for f in files:
doSomethingWithFile( f )
func( *['file1','file2','file3'] ) #Is treated like func('file1','file2','file3')
func( 'file1' )
Я утверждал бы, что это - больше pythonic в тот "явный, лучше, чем неявный". Здесь существует, по крайней мере, распознавание со стороны вызывающей стороны, когда вход уже находится в форме списка.
Если Вы имеете больше контроля над вызывающей стороной, то один из других ответов лучше. У меня нет той роскоши в моем случае, таким образом, я обосновался на следующем решении (с протестами):
def islistlike(v):
"""Return True if v is a non-string sequence and is iterable. Note that
not all objects with getitem() have the iterable attribute"""
if hasattr(v, '__iter__') and not isinstance(v, basestring):
return True
else:
#This will happen for most atomic types like numbers and strings
return False
Этот подход будет работать на случаи, где Вы имеете дело со знать набором подобных списку типов, которые встречают указанные выше критерии. Будут пропущены некоторые типы последовательности все же.
Хорошо поэтому в случае, если у кого-либо еще есть та же проблема, я нашел обходное решение:
я уничтожил обратную петлю ('lo') интерфейс, который появился при использовании ifconfig с командой 'sudo ifconfig lo вниз', который сразу привел к ping, проходящим снова. После перезагрузки интерфейс обнаружился снова, и все работало способ, которым он, как предполагалось. Никакая идея, где проблема на самом деле была, но эй она работает...
Проблема была решена путем соединения использования sudo pppoeconf
команда. Но соединение с помощью администратора сети было все еще грязно.
evtest
на моем персональном ноутбуке, и конечно же, приложенные журналы клавиатуры KEY_SYSRQ
несколько раз в секунду. Но that' s просто признак, isn' t это? Это прекращает происходить, если говорят, я открываю окно Chrome и затем изменяюсь на Наутилус. Почему это сделало бы это?
– cst1992
15 July 2018 в 14:59
У меня есть та же проблема, и я еще не решил ее. Но я узнал что случилось.
я хотел бы некоторый совет специалиста к, но похоже, что FGLRX НЕ работает над Ubuntu 16.04 и последним 14.04 (5), потому что это не совместимо с последней версией XORG.
Вот объяснение:
Ubuntu 14.04.5/16.04/16.10 и графика AMD
Please Note: 14.04.5 brought with it Xorg 1.18, which is what causes the problem in 16.04 to begin with. Luckily, it is completely possible to downgrade Xorg to 1.16 (on 14.04), so you can still use fglrx. Read here.
мне на самом деле был нужен APK AMD для кодирования в OpenCL 2.0, таким образом, я предполагаю, что просто должен избежать драйверов AMD и найти другой способ установить OpenCL.
Одно предложенное решение на связанной странице:
Try out Oibaf's drivers.
They work for AMD, NVIDIA and Intel, so you can even try them out if you dislike NVIDIA's proprietary drivers or are hoping for more performance from your Intel card.
They support newer OpenGL and OpenCL versions, so stuff that depends on those will work.
They claim to be optimized, so you could see an real boost in performance.
драйвер Oibaf походит на большую замену к fglrx, и это, вероятно. Однако, если у Вас есть действительно недавняя карта AMD, можно хотеть испытать собственное предложение AMD.
Можно зафиксировать поврежденные зависимости с
sudo apt-get -f install