タグ付けされた質問 「python」

Pythonは、マルチパラダイム、動的型付け、多目的プログラミング言語です。これは、学習、理解、使用が迅速で、クリーンで統一された構文を適用できるように設計されています。Python 2は2020年1月1日をもって正式にサポートされなくなりました。それでも、バージョン固有のPythonの質問については、[python-2.7]または[python-3.x]タグを追加します。Pythonのバリアントまたはライブラリ(Jython、PyPy、Pandas、Numpyなど)を使用する場合は、タグに含めてください。

3
名前にダッシュまたはハイフン(-)を含むPythonモジュール
名前にダッシュを含む既存のpythonモジュール、foo-bar.pyがあります モジュール名を変更することは、モジュールが共有されているため避けたいものであり、特別なケースが機能するように、使用されているすべての場所を追跡する必要があります。 名前に通常禁止されている「-」が含まれているモジュールをロードする方法はありますか? (これはベストプラクティスではないことを理解しています。しかし、この状況では、はるかに大規模なアプリケーションのセットを再設計してテストしない方がいいでしょう。また、私の企業のマスターが実装に時間をかけることを承認しないと思いますそのような変化。)
92 python  module  import 

9
整数をある範囲にクランプする方法は?
私は次のコードを持っています: new_index = index + offset if new_index < 0: new_index = 0 if new_index >= len(mylist): new_index = len(mylist) - 1 return mylist[new_index] 基本的に、私は新しいインデックスを計算し、それを使用してリストからいくつかの要素を見つけます。インデックスがリストの境界内にあることを確認するために、これらの2つのifステートメントを4行に分割して記述する必要がありました。それはかなり冗長で、少し醜いです...あえて言ってください、それは非常に非Pythonicです。 他にもっとシンプルでコンパクトなソリューションはありますか?(そしてもっとpythonic) はい、if else1行で使用できることはわかっていますが、判読できません。 new_index = 0 if new_index < 0 else len(mylist) - 1 if new_index >= len(mylist) else new_index またmax()、min()一緒にチェーンできることも知っています。よりコンパクトですが、タイプを間違えた場合、バグを見つけるのは少しあいまいで、わかりにくく感じます。言い換えれば、私はそれが非常に簡単であるとは思いません。 new_index = max(0, min(new_index, …
92 python  clamp 

6
辞書を使用してmatplotlibを使用してバーをプロットする
matplotlib辞書から直接データを使用して棒グラフをプロットする方法はありますか? 私の辞書はこのようになります: D = {u'Label1':26, u'Label2': 17, u'Label3':30} 私は期待していました fig = plt.figure(figsize=(5.5,3),dpi=300) ax = fig.add_subplot(111) bar = ax.bar(D,range(1,len(D)+1,1),0.5) 動作しますが、動作しません。 ここにエラーがあります: >>> ax.bar(D,range(1,len(D)+1,1),0.5) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "/usr/local/lib/python2.7/site-packages/matplotlib/axes.py", line 4904, in bar self.add_patch(r) File "/usr/local/lib/python2.7/site-packages/matplotlib/axes.py", line 1570, in add_patch self._update_patch_limits(p) File "/usr/local/lib/python2.7/site-packages/matplotlib/axes.py", line …

3
基本クラスから派生クラスを動的に作成する方法
たとえば、次のような基本クラスがあります。 class BaseClass(object): def __init__(self, classtype): self._type = classtype このクラスから、他のいくつかのクラスを派生させます。 class TestClass(BaseClass): def __init__(self): super(TestClass, self).__init__('Test') class SpecialClass(BaseClass): def __init__(self): super(TestClass, self).__init__('Special') 次のように、新しいクラスを現在のスコープに入れる関数呼び出しによってこれらのクラスを動的に作成するための、Pythonを使った素晴らしい方法はありますか。 foo(BaseClass, "My") a = MyClass() ... なぜこれが必要なのかについてのコメントと質問があります:派生クラスはすべて、まったく異なる内部構造を持っていますが、コンストラクターは以前に未定義の引数をいくつか取ります。したがって、たとえば、クラスのコンストラクタがとを受け取りながらMyClassキーワードaをTestClass受け取ります。bc inst1 = MyClass(a=4) inst2 = MyClass(a=5) inst3 = TestClass(b=False, c = "test") ただし、クラスのタイプを入力引数として使用しないでください。 inst1 = BaseClass(classtype = "My", a=4) 私はこれを動作させましたが、他の方法、つまり動的に作成されたクラスオブジェクトを好むでしょう。

15
Pythonで外部プログラム(実行可能)を実行していますか?
Pythonの作業を始めたばかりで、Pythonから外部の実行可能ファイルを実行しようとしています。 Fortranで書かれたプログラムの実行可能ファイルがあります。実行可能ファイルの名前がflow.exeだとします。そして、私の実行ファイルはにありC:\Documents and Settings\flow_modelます。私はos.systemとpopenコマンドの両方を試しましたが、今のところそれを機能させることができませんでした。次のコードはコマンドウィンドウを開くようですが、モデルを実行しません。 # Import system modules import sys, string, os, arcgisscripting os.system("C:/Documents and Settings/flow_model/flow.exe") どうすれば修正できますか?


3
PyCharmはプロジェクトのすべてのPythonエラーをリストできますか?
私は仮想環境でpython 2.7とPyCharm 2.7(2013年2月7日の時点で新しいビルド)を使用しています。 明白なエラー(他の言語でのコンパイルエラーと同等、たとえば、宣言されていない変数の使用、存在しない関数の呼び出し)があるpythonファイルを開くと、ファイルのガターに赤い縞が表示されます。 そのため、エラーを含むファイルにたまたまナビゲートしたときに、ランダムにエラーを発見しました。私が本当に望んでいるのは、Pythonエラーのすべてを別のウィンドウにリストできることです。Visual Studio 2005/2008/2010 / ... IDEには個別の「エラー」ビューがあり、それらすべてにファイル名と行番号が表示され、これらのエラーのいずれかをクリックして直接に移動できます。ソース。 PyCharmにはこのようなものがありますか?

2
複数のプロセス間で結果キューを共有する
multiprocessingモジュールのドキュメントには、で始まるプロセスにキューを渡す方法が示されていますmultiprocessing.Process。しかし、どのようにして非同期ワーカープロセスでキューを共有できapply_asyncますか?動的な結合などは必要ありません。ワーカーが(繰り返し)結果をベースに報告する方法にすぎません。 import multiprocessing def worker(name, que): que.put("%d is done" % name) if __name__ == '__main__': pool = multiprocessing.Pool(processes=3) q = multiprocessing.Queue() workers = pool.apply_async(worker, (33, q)) これは失敗します: RuntimeError: Queue objects should only be shared between processes through inheritance。私はこれが何を意味するのかを理解し、酸洗い/酸洗いを必要とするのではなく継承するためのアドバイス(およびWindowsのすべての特別な制限)を理解しています。しかし、機能するようにキューを渡すにはどうすればよいですか?私は例を見つけることができず、さまざまな方法で失敗した代替案をいくつか試しました。助けてください?

5
同じ図に異なるデータフレームをプロットする
長年の温度記録を含む温度ファイルがあり、次のような形式です。 2012-04-12,16:13:09,20.6 2012-04-12,17:13:09,20.9 2012-04-12,18:13:09,20.6 2007-05-12,19:13:09,5.4 2007-05-12,20:13:09,20.6 2007-05-12,20:13:09,20.6 2005-08-11,11:13:09,20.6 2005-08-11,11:13:09,17.5 2005-08-13,07:13:09,20.6 2006-04-13,01:13:09,20.6 毎年、レコードの番号、時刻が異なるため、パンダのdatetimeindicesはすべて異なります。 比較するために、異なる年のデータを同じ図にプロットします。X軸は1月から12月で、Y軸は温度です。これを行うにはどうすればよいですか?

3
Pythonでルートロガーがデバッグレベルに設定されているかどうかを確認していますか?
次のようなコマンドラインパラメータを使用して、ロギングモジュールをデバッグに設定した場合: if (opt["log"] == "debug"): logging.basicConfig(level=logging.DEBUG) ロガーがDEBUGに設定されているかどうかを後で確認するにはどうすればよいですか?Trueフラグが渡された場合に関数の時間を計測するデコレータを作成しています。フラグが指定されていない場合、ルートロガーがDEBUGに設定されていると、デフォルトでタイミング情報が出力されます。

9
Pythonハッシュ可能辞書
演習として、そして主に私自身の娯楽のために、私はバックトラッキングpackratパーサーを実装しています。このためのインスピレーションは、アルゴルのような言語でハイジェニックマクロがどのように機能するかについて、もっとよく理解したいと思います(通常、構文構文のないlisp方言に見られるように)。このため、入力を通過するパスによって文法が異なる可能性があるため、キャッシュされた解析結果とともに現在のバージョンの文法も保存しない限り、キャッシュされた解析結果は無効です。(編集:キーと値のコレクションのこの使用の結果は、それらが不変でなければならないということですが、それらを変更できるようにするためにインターフェースを公開するつもりはないので、可変または不変のコレクションは問題ありません) 問題は、Python dictが他のdictのキーとして表示できないことです。タプルを使っても(とにかくやっているように)助けにはなりません。 >>> cache = {} >>> rule = {"foo":"bar"} >>> cache[(rule, "baz")] = "quux" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'dict' >>> ずっと下のタプルである必要があると思います。現在、Python標準ライブラリは、ほぼ必要なものを提供しcollections.namedtuple、非常に異なる構文を持っていますが、キーとして使用できます。上記のセッションから続く: >>> from collections import namedtuple >>> Rule = namedtuple("Rule",rule.keys()) >>> cache[(Rule(**rule), "baz")] = "quux" >>> cache {(Rule(foo='bar'), …
92 python 

5
Python-関数を別の関数に渡す
私はpythonを使用してパズルを解いています。解くパズルによっては、特別なルールセットを使用する必要があります。Pythonで関数を別の関数に渡すにはどうすればよいですか? 例 def Game(listA, listB, rules): if rules == True: do... else: do... def Rule1(v): if "variable_name1" in v: return False elif "variable_name2" in v: return False else: return True def Rule2(v): if "variable_name3" and "variable_name4" in v: return False elif "variable_name4" and variable_name1 in v: return False else: return …

6
Ipythonノートブック(1つのセル内)でループ内のプロットを動的に更新する方法
環境:Python 2.7、matplotlib 1.3、IPython notebook 1.1、linux、chrome。コードは、1つの単一の入力セルにあります。--pylab=inline IPythonノートブックとパンダを使用してストリームを消費し、5秒ごとに動的にプロットを更新したいと思います。 printステートメントを使用してデータをテキスト形式で印刷すると、完全に正常に機能します。出力セルはデータを印刷し続け、新しい行を追加します。しかし、データをプロットしようとすると(その後ループで更新しようとすると)、出力セルにプロットが表示されません。ただし、ループを削除した場合は、1回だけプロットします。正常に動作します。 次に、簡単なテストをいくつか行いました。 i = pd.date_range('2013-1-1',periods=100,freq='s') while True: plot(pd.Series(data=np.random.randn(100), index=i)) #pd.Series(data=np.random.randn(100), index=i).plot() also tried this one time.sleep(5) プロセスを手動で中断するまで(ctrl + m + i)、出力には何も表示されません。そして、それを中断した後、プロットは複数の重なり合った線として正しく表示されます。しかし、私が本当に望んでいるのは、表示されて5秒ごとに更新されるプロットです(または、plot()関数が呼び出されたときはいつでも、上で述べた印刷ステートメントの出力と同様に、うまく機能します)。セルが完全に完了した後に最終的なチャートを表示するだけでは、私は望みません。 それぞれの後にdraw()関数を明示的に追加することなども試みましたplot()。どれも機能しません。IPython Notebookの1つのセル内でfor / whileループによってプロットを動的に更新する方法を知りましょう。

6
PYTHONPATH対sys.path
別の開発者と私は、PYTHONPATHとsys.pathのどちらを使用して、Pythonがユーザー(たとえば、開発)ディレクトリのPythonパッケージを検索できるようにするかについて意見が異なります。 典型的なディレクトリ構造を持つPythonプロジェクトがあります。 Project setup.py package __init__.py lib.py script.py script.pyでは、次のようにする必要がありますimport package.lib。パッケージがsite-packagesにインストールされている場合、script.pyはを見つけることができますpackage.lib。 ただし、ユーザーディレクトリから作業する場合は、他に何かする必要があります。私の解決策は、PYTHONPATHに "〜/ Project"を含めるように設定することです。別の開発者は、script.pyの最初にこのコード行を配置したいと考えています。 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) Pythonがのローカルコピーを見つけられるようにしますpackage.lib。 この行は、開発者またはローカルコピーから実行している人々にのみ役立つため、これは悪い考えだと思いますが、それが悪い考えである正当な理由を述べることはできません。 PYTOHNPATH、sys.pathを使用する必要がありますか、それとも問題ありませんか?

30
Pythonを使用したクイックソート
私はpythonをまったく使っていないので、それにクイックソートを実装しようとしています。誰かが私のコードを完成するのを手伝ってくれませんか? 3つの配列を連結して出力​​する方法がわかりません。 def sort(array=[12,4,5,6,7,3,1,15]): less = [] equal = [] greater = [] if len(array) > 1: pivot = array[0] for x in array: if x < pivot: less.append(x) if x == pivot: equal.append(x) if x > pivot: greater.append(x) sort(less) sort(pivot) sort(greater)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.