|....,,__ |_::;; ~"'ヽ | //^''ヽ,,) | i⌒" | ∀`) < 誰もいない きのこるならいまのうち |⊂ | ノ _,,,......,,__ /_~ ,,...:::_::;; ~"'ヽ (,, '"ヾヽ i|i //^''ヽ,,) ^ :'⌒i i⌒" |( ´∀`) < きのこ のこーのこ げんきのこ ♪ |(ノ |つ | | ⊂ _ ノ ""U _,,,......,,__ /_~ ,,...:::_::;; ~"'ヽ (,, '"ヾヽ i|i //^''ヽ,,) ^ :'⌒i i⌒" (´∀` )| < エリンギ まいたけ ブナシメジ ♪ ⊂| (ノ | | | ヽ _ ⊃ .U"" | | ミ | ミ サッ! | ミ |
┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
4 :
デフォルトの名無しさん :2013/04/08(月) 09:35:04.27
質問いいですか?
いいっすよ?
2.7.4、3.3.1リリース 例の日本語.pyが実行できない問題は修正されました
なんだ、2.xも更新続けるのか
RCを3週遅れでリリースした割に正式版はほぼ予定通りだな ・・・大丈夫なの?
御健闘を祈ります
pyquery
>>14 これは!理想系ですね。
重ねて御礼申し上げます。
俺デザイナーで使ってるソフトのPythonのコンパイラが変更になったから Readme読みながら初めて自分でビルドしてみたんだ… あれがないだの これが通ってないだの…警告が大量に出て 言われている意味が1/3も理解できねー お前らこんなことを日常的にやってんだな マジ尊敬するわ
(∀`*ゞ)エヘヘ
フヒヒ
デザイナーとか言っちゃっても、 最適化が甘いとか言って、自前でレンダリングエンジンを 作り直しちゃう人とかいたりするもんな。
>>18 皮肉言いに畑違いの板まで来るか あほー
正直2週間上手く行ってなくて質問しようと思って来たんだけど
前スレ読んだら俺は超初心者以前レベルっぽかったから
もっと自分でやらんといかんなと思い直して尊敬の意を表して帰った次第
>>21 YES
つか皮肉にとられるくらいお前らには簡単なことなんだなやっぱ… それができない俺って…
ネットで検索しても知ってて当たり前みたいに書かれているけど
やさしいC++やってみたけどmakefileのこととか一言もなかったし
ビルドに必要な知識って言語の知識とはまた別枠なのか?
ガチのアホ用に本があれば紹介してくれないか
せめて指示されている内容と自分が何が分からんかは分かるようになりたいわ
簡単でもないしmakeの本だけ買っても多分解決しないよ とりあえず環境と自分のやったこととエラーを晒してみたら?
>>22 なるほど
っていうかmaya python使うのにビルドってなにやってんの?
ツールプログラマいないの?
25 :
デフォルトの名無しさん :2013/04/10(水) 10:30:25.58
環境がわからないと応えようがない OSとかバージョンとか、何をやったら、何が表示されたとか、どんな現象が出たとか
>>23 >>25 ご厚意ありがと
今の状態じゃ回答もらっても俺が理解も応用もできそうにないから もちっと自分でも頑張ってから聞くわ
makeの本なんてものがあるのか windowsだとMAKEの達人というのでいいんかな これだけじゃ解決しないとのことだがまずは読んでみる
後日お相手してくれー
>>24 色々… PILで画像いじったりNumPyでベクトルいじったりlxmlでXMLいじったり…
今いるところは映像メインでプログラマがいないんだわ
>>26 Mayaに組み込まれているPython2.6.4がVS2008+MSVCR90C製からVS2010+MSVCR10C製になったのよ
windowsならnumpyなんてビルドせずにちょちょいと入れられるじゃん numpyと言えばanaconda accelerateが気になるわ pycudaより凄いかな
WindowsのVCでビルドするならMakeは使わない VCのプロジェクトでビルドするだけで黙っててもバイナリができる というか、本当にビルドが必要なのか? 組み込まれてるものなのにPythonだけユーザーに更新させるって奇妙な話だろ Mayaのドキュメント見ると一緒にインストールされるって書いてあるし
あんま詳しくなさそうだから 変更になったのか 変更が必要になったのか の区別も付いてないような気がする 変更しなければならなくなったと判断した根拠はなんだろう
俺の勘だとMSVCRT100.DLLがありませんだと思う Googleにmaya msvまで入れたらサジェストされたし
>>27 Mayaに組みこまれているPythonがVS2008からVS2010でビルドされたものに替わったせいで
NumPyやPILといったVS2008でビルドされている拡張が動かなくなった
だからVS2010で拡張をビルドしたい、でもうまくいかない、ってこと?
とりあえずMakeの本はいらないよ
Mayaにバンドルされてる奴は2010でビルドされた2.6なんだろうが 一般のPython2.6は2008でビルドされてるから、Mayaにバンドルされたバイナリパッケージが使えない のかもしれない
リロードしてなくてごめんねえええええええええええええ
>>29 30
PythonをビルドしたいんじゃなくてMayaPythonで使うサードパーティ製のモジュールをビルドしたいんだ
すまんな分かりにくくて…
Maya内でサードのモジュールを使いたければ2010を使って自分でビルドしなさいというのはサポートからのお達し
日本だと話題になっていないっぽいんだが海外掲示板見るとモジュールが動かなくなったというのがちらほらある
で どれもビルドは簡単だから問題ない自分でやれと言われている で 俺がへこむ
とりあえずPILは内で動くようにはなった なんか怪しいからもうちょい調べる
あんま分かってないのは100%認める
>>31 msvcr100.dllは入ってるで
MayaPythonのサードパーティーライブラリの構成がどうなってるか知らないけど Python2.7にnumpyをeasy_installか何かで入れてMayaPythonにコピーしたら動かないだろうか
う、駄目だ。 2.7も2008やん。
俺もリロードしてなかった すまん
>>32 >>33 YESそれそれ 質問する方が知識ないとほんと駄目だな
makeの本は注文してしまった すまぬ…まあこれはこれで面白そうだから…
39 :
デフォルトの名無しさん :2013/04/13(土) 19:52:39.50
Python3.3で質問す。 b"a"からb"\x00\x61"に変換しようと調べてるのですが、\x00\x61なんというタイプのデータ分からず調べられません。 これはなんていうのでしょうか?
>>39 >>> a = b'a'
>>> a.decode('ascii').encode('utf-16be')
b'\x00a'
とか?
というか、なんで元がバイト列なの?
41 :
39 :2013/04/13(土) 22:57:17.09
39はやめます
了解です
a = b'a' unichr(ord(a))
MarkLutzの初めてのPython日本語訳(第4版)いつ頃でますか 原著の第5版が6月発売予約受付中とかですがこっちが先に出たりしますか
出版社でもないのにんなこと知るか
原著の4版(python3完全対応版)2009年に出てるのに 日本語版はまだ3版(py3暫定対応)なんだね。 python3出た時期で需要ありそうなのに。 原著5版が先に出ると周回遅れか。
python自体需要ねーだろ pythonの本出すくらいならPHPの本濫造するわ
電子書籍オンリーでもいいから出して欲しい。 もちろん第5版を。
むしろもう英語版で良くね?
その英語版だが5版は1562ページになるようだ ちなみに4版は1216ページ
増えすぎ
そんなのますます翻訳は出ないな
オライリーは日本のPythonに貢献する気がさらさら無いわけですね。
要らんだろ
中身は薄いから多い日も安心
逆に考えて完全翻訳してオライリーに売り込みをかけたらいいんだよ
1500 ページもの電話帳を Learning シリーズで出す米オライリーがどうしようもない どうしても出したければ Teach Yourself Python in 365 Days に改題すべき
>>53 その前にジャップが全くPythonに貢献していない事実
そりゃ日本人ってだけだろ 日本のコミュニティや市場ではなく
61 :
デフォルトの名無しさん :2013/04/21(日) 00:09:09.71
質問です。 使っていないモジュールのimportを削除するとimportしているモジュールが見つかりませんというエラーがでます。 たとえば import A from B import C def func(): C.cfunc() というコードが問題なく動く状態で、import A from Bを削除すると AttributeError: 'module' object has no attribute 'cfunc' というエラーがでます。調査方法のヒントとかなんでもいいので何かあったら教えてください。
import A from B ^ SyntaxError: invalid syntax
from A import B でした。ごめんなさい。
そういうときは、大抵ファイル名がおかしい importしてるモジュールと被ってるとか
def show(p): for i in range(len(p)): print p[i] p = [[1.0]*5]*4 show(p) for i in range(4): for j in range(5): p[i][j]=p[i][j]*2 show(p) で結果が [1.0, 1.0, 1.0, 1.0, 1.0] [1.0, 1.0, 1.0, 1.0, 1.0] [1.0, 1.0, 1.0, 1.0, 1.0] [1.0, 1.0, 1.0, 1.0, 1.0] [16.0, 16.0, 16.0, 16.0, 16.0] [16.0, 16.0, 16.0, 16.0, 16.0] [16.0, 16.0, 16.0, 16.0, 16.0] [16.0, 16.0, 16.0, 16.0, 16.0] [16.0, 16.0, 16.0, 16.0, 16.0] となります。 2つ目の結果は、 [2.0, 2.0, 2.0, 2.0, 2.0] [2.0, 2.0, 2.0, 2.0, 2.0] [2.0, 2.0, 2.0, 2.0, 2.0] [2.0, 2.0, 2.0, 2.0, 2.0] っとなって欲しいのに思うようにいきません どうしたらいいですか?
p = [[1.0]*5 for _ in range(4)]
ありがとうございます ちなみにp = [[1.0]*5]*4でうまくいかないのはなんでですかね…
p = [[1.0]*5]*4 でやってるのは下と同じ x = [1.0]*5 p = [x,x,x,x] つまりp[i]は同じオブジェクトを指していて、 p[i][j]=p[i][j]*2 は x[j]=x[j]*2 を何度も繰り返してることになる
なーる これはえげつないですね…
馬鹿には無理
71 :
デフォルトの名無しさん :2013/04/21(日) 07:30:36.08
>>69 は
こんなのでもえげつないと思うかもしれないな
>>> a = [1, 2, 3]
>>> b = a
>>> b[1] = 100
>>> a
[1, 100, 3]
無関係のオレもこれには、えげつなっ!
ディープコピー!!
ステキじゃないか
76 :
デフォルトの名無しさん :2013/04/21(日) 11:59:57.05
みんなのパイチンくん みんなのバクチンくん
77 〜
78 :
61 :2013/04/21(日) 14:39:55.47
>>64 ありがとうございます。
一通り使ってるモジュールみてみたんですが、よくわかりませんでした。すみません。。
やろうとしていること:
元々スクリプトを起動してwsgirefを使ってサーバにしていたのをmod_wsgiを使うようにしたので、不要となったwsgirefのimportを取り除く。
コード:
import urllib
import json
import ipaddress
from datetime import datetime
import sqlite3
import re
from my_module import my_class
from wsgiref.simple_server import make_server#これを消すと下のエラーがでる。
エラー:
q = urllib.parse.unquote(string)
AttributeError: 'module' object has no attribute 'parse'
試したことなど:
from datetime import datetimeをimport datetimeにしてみましたがだめでした。
importを消して、別のモジュールの関数が見えなくなるというのがよくわかりません。。
ほかに何かあれば教えてください。
>>78 そもそもpython3でimport urllib.parseが要ると思うんだが?
urllib.__file__ や sys.path を調べてみたら?
81 :
61 :2013/04/21(日) 15:36:31.25
82 :
61 :2013/04/21(日) 15:40:28.62
でも、なんでfrom wsgiref.simple_server import make_serverいれたらエラーなく動くんでしょうね。 不思議ですね。
83 :
61 :2013/04/21(日) 16:07:27.96
>>83 ウソだろ?と思って試したら本当だったw
みんな知ってる事なのかな?
[~/tmp/pytest]% echo $PYTHONPATH
.
[~/tmp/pytest]% cat test_submodule_import.py
import remember.memoize
[~/tmp/pytest]% python
Python 2.7.3 (default, Sep 26 2012, 21:53:58)
[GCC 4.7.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import remember
>>> remember.memoize
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'module' object has no attribute 'memoize'
>>> import test_submodule_import
>>> remember.memoize
<module 'remember.memoize' from '/usr/local/lib/python2.7/dist-packages/remember/memoize.pyc'>
85 :
61 :2013/04/21(日) 16:42:02.22
wsgiref/simple_server.pyでurllib.parserをimportしてただけだった。 コード見れば分かるようなことだった。でもIRCのbobさん教えてくれた。やさしい。
86 :
61 :2013/04/21(日) 19:01:56.02
すいません。やっぱりわかりません。 cgiモジュールでもurllib.parseをimportしてたのでそっちを例に使います。 import cgiしただけではNameError: name 'urllib' is not definedとなるのはなぜでしょうか。 sys.modulesを確認すると urllib<module 'urllib' from '/opt/python3/lib/python3.3/urllib/__init__.py'> urllib.parse<module 'urllib.parse' from '/opt/python3/lib/python3.3/urllib/parse.py'> が存在しています。cgiモジュールでimportされてると理由でurllib.parse.quote()が呼べるなら、import cgiした時点で呼べてもよさそうに思います。 それとimport cgiした時とimport cgi, import urllibした時のsys.modulesは一緒でした。
importしたあと関数オブジェクトだけ得るなりして名前空間から消してんじゃねえの
>>86 import cgiの段階でimportした側のモジュールに存在するのはcgiだけ。
cgiの中でimport urllib.parseしていると、cgiをimportした側からみると
cgi.urllib.parseが存在する。
この時点で、urllibモジュールの名前空間にはparseが存在する。
で、さらにimport urllibするとurllibという名前が、既にimport済みの
urllibにバインドされる、という事だと思う。
メインモジュールのurllib is cgi.urllib
が成立するのはちょっと意外だった。
>>78 そのエラーが出る直前のurllibの型や属性の確認してみては?
90 :
デフォルトの名無しさん :2013/04/22(月) 09:59:22.66
みんなのみんなのパイチンクンとデカチンクンですよ〜
91 :
デフォルトの名無しさん :2013/04/23(火) 14:50:14.97
>>50 日本語に訳したらとんでもないページ数になりそうw
でも、もともと無駄な記述が多い本ではあるよね
講義をそのまま文字にしたから仕方ないのかもしれないけど
初めてのPerlくらいにコンパクトなら読みやすいんだが
anacondaやnumbaProってどうなんだろう 使ってる人いる? 速くなるなら使ってみたい
93 :
忍法帖【Lv=13,xxxPT】(1+0:5) :2013/04/23(火) 22:56:13.07
windowsでvirtualenvって入らない?
原価計算(岡本清)を読破した俺に1500ページくらい何でもないぜ
>>93 入るよ
現に使ってる
なぜ入らないと思った
virtualenvwrapperが入らないって事か?
windowsでもpip使えよ
>>92 ライブラリの更新が早かったんでEnthought Python Distributionから
Anacondaに乗り換えた。似たような感じ。
データ処理や科学技術計算のPython環境セットアップに便利。
有料版(Anaconda Accelerate)だとIntel MKL使ってる分速くなる。
NumbaProは使ってないので知らない。
98 :
忍法帖【Lv=2,xxxP】(1+0:5) :2013/04/24(水) 22:24:19.19
>>97 なるほど
numbaProはAccelerateに入ってるCUDAアクセラレーターだったはず
試しに使ってみるよ、ありがとう
win7 python2.6 flask利用してつくったプログラムが数日前まで 起動できたのにインポートエラーが起こるようになりました。 普通のpyファイルは実行できるのでflaskの問題だと思うのですが Traceback (most recent call last): File "test_hello.py", line 1, in <module> from flask import Flask ImportError: No module named flask 自分のコードが悪いのかと思い公式のhello worldで試しましたが やはりエラーが起こりました。 なぜエラーが起こるのか教えてください。
101 :
デフォルトの名無しさん :2013/04/25(木) 04:09:35.14
No module named flask No module named flask No module named flask
フラスクが無い言うてはりますなぁ
103 :
忍法帖【Lv=2,xxxP】(1+0:5) :2013/04/25(木) 07:50:02.23
>>95 mkvirtualenv -p ほにゃらら〜ってやってたわ。
winだとコマンドが違うのね
python -m ほにゃらら〜なんやね
>>100 >公式のhello worldで試しましたが
>やはりエラーが起こりました。
その helloworld.py ? のエラーも書かないとわかりません
>>100 sys.path の中身と Flask のインストールパスは?
最後に正常に実行できていたときと実行できなくなった間になにかしたことは?
初心者です。pyton3.3です。 このエラーってどういうことですか? 教えてください "TypeError: TypeError(""'str' object is not callable"",)"
型エラー:strオブジェクトは呼び出せません
>>107 ありがとです。
while True:
str=input('> ')
print( str )
if str=='bye':
break
これで出たエラーなんですが・・どこが間違ってますか?
strという関数があるからダメなのかな?
>>108 起きない
エラー出たときは行番号が書いてあるだろ
行番号は本当にこのコードの中を指してるのか?
111 :
デフォルトの名無しさん :2013/04/25(木) 20:17:31.96
>>104 >>100 がhelloworldのエラーメッセージです
>>105 環境変数にもPythonの場所を指定したはずですが…
変わったことも特になにもしていないので勝手に消えるはずはないのですが…
はずはずってうるせえよ 絶対か本当か100%かガキみたいな言い方だがとにかく確かめろ たぶんおそらくはずって言うな
面倒くさいからsys.pathとFlaskのインストールパス貼れよ プライバシーが気なるところは伏字にして、とにかく全部貼れ 省略するな
115 :
デフォルトの名無しさん :2013/04/25(木) 22:39:02.70
すみません自己解決しました 実行する際にコマンドプロンプトでenvをアクティベートしてから実行したら 無事実行することができました。 Pythonでプログラムを組んだ経験がないため、ご迷惑をおかけいたしました。
お前はレス番いくつだよw 誰がどう解決したのかわかんねえなw
質問へたくそな奴は報告もへたくそだな
キレてるんすか?
あキレてますねえ
上手いこと言ったつもりですか?
絶望的な自演臭
125 :
忍法帖【Lv=3,xxxP】(1+0:5) :2013/04/28(日) 22:48:13.77
gui作るならなにがいい?pyqtかな?
wxPythonかpyQtが定番だけど違いがよくわからない
PyQtはGPLだから使い物にならない Qt使うならPySide
LLじゃない言語だとGPLは非常に気になるんだが そもそもソース配布がほとんどLLだとパッとしねえんだよな py2exeとか使うなら、って感じ あとGPL v3絡みで特許
Qtなんて使うようなGUI作り込むアプリなら GPL許容できない用途が多いと思う
例えば何さ バックエンド分離すれば済むようなものは範疇に含めないでくれよ
逆に聞くがPySideがあるのにそこまでしてGPLにする理由は何さ
質問に答えない奴の質問に答える筋合いはないな
py2exeとか使うなら、って自分で言ってるじゃん パッケージ化して配布するようなものはGUIの作り込みの比重が大きい、っていうのは 具体的な数字の根拠は知らんが相関としては十分ありそうに思えるけどな
134 :
130 :2013/04/29(月) 01:26:37.93
132は俺じゃないぞ GPLと聞くだけで蕁麻疹が出そうな奴には無闇にツッコミを入れたくなる性分なんだ 特に低レベルな奴が多いしね 別にお勧めはしないよ
GPLを/.erとかモヒカンがアホを罵倒するための道具として利用してることは否定できまい。 あれはあれで限度を越えた馬鹿だが、エレコムみたいな、ね。
要するに、嫌われるのは手前らが撒いた種だろってこった。 見た目もちょうどいい教祖様と牛でも拝んでろ。
作り込んだGUIのソース公開が許されないところもあるんです
GPL版を撒き餌に使って商用ライセンスを売る商売が広く成り立ってる現実
>>137 130でも言ってるけど具体的にどこよ?
数字も名前も出さずに一般論のように語るのは論法としてどうなの?
それともパイソニアはこういうのがお得意なの?
逆に俺が 作り込んだGUIのソース公開が許されないところもあるが、取るに足らないほど少数だ と根拠なく喋ってもこいつは受け入れるんだろうか? 根拠が知らんとか前置きするくらいなら調べてから書けよっていう
さっさと最終手段「常識」に打って出るといいですよ 世間を知らねえなとか仕事しろよとか社会でろ働けとかね 上にも書いてあるモヒカンは、そういう安っぽい主張をされるのが楽しくて仕方ないんでね
仕事とかする前に外の空気吸ったり遊びに行ったほうがいいと思う
豆知識: Pythonの作者Guidoは過去にGPLで揉めまくって(一方的にくだらん因縁つけられて) GPLに本当にうんざりしている
その豆知識で何かしゃべった気になってるんですかねえ Pythonやってると伝聞、推測、妄想ばっかりで具体的な話ができない病気でも発症するんです?
GPLなんてウンコだから使わないって人でも Pythonを使っても大丈夫だよ! 気持ち悪い思想とは無縁だからね!
>>144 お前はPython使ってないのに、こんな初心者スレにまで来てGPLの布教してんの?
キモすぎるww
まとめ:GPL信奉者はやっぱりキモい
>GPL版を撒き餌に使って商用ライセンスを売る商売が広く成り立ってる現実 これは紛れもない事実(PyQt含)なわけだが、GPL信奉者はこれをどう説明するんだろうか
ipython notebookを入れたのですが外部のブラウザから使えるようにできますか? ubuntu desktopではブラウザが立ち上がりますが ubuntu serverに入れたいのですがブラウザがないのでできません。
echoにバグがない限り安全です
152 :
デフォルトの名無しさん :2013/05/01(水) 21:19:33.15
windows python3.3 apache2.4 という環境用のmod_wsgiはないんでしょうか? windowsとpython3.3でwebサイト作る場合は何を使って動かすものですか?
154 :
デフォルトの名無しさん :2013/05/02(木) 00:54:33.40
>>152 参考になるかわからないけど
LinuxだとPython3.3+httpd2.25+コンパイルしたmod_wsgi3.4で動いてる。
155 :
デフォルトの名無しさん :2013/05/02(木) 00:56:10.46
>>154 httpdのバージョン
2.25じゃなくて2.2.15だった。
tuple って imutable だけど 追加は出来るんですね >>> a = (1, 2, 4) >>> b = a + (5, 3) >>> b (1, 2, 4, 5, 3) >>> a += (5, 3) >>> a (1, 2, 4, 5, 3)
だってそれ追加じゃないもん 再作成が正しい
つまり、こういうことだね >>> a = (1,2,4) >>> b = a >>> a += (5,3) >>> a, b ((1, 2, 4, 5, 3), (1, 2, 4))
>>> a = [1, 2, 4] >>> b = a >>> a += [5, 3] >>> a, b ([1, 2, 4, 5, 3], [1, 2, 4, 5, 3]) リストだとこうなるのね
161 :
デフォルトの名無しさん :2013/05/05(日) 18:17:18.29
>>> a = [1,2,4] >>> b = a >>> a = [1,2,4] + [5,3] >>> a,b ([1, 2, 4, 5, 3], [1, 2, 4]) >>> >>> >>> a = [1,2,4] >>> b = a >>> a = a + [5,3] >>> a,b ([1, 2, 4, 5, 3], [1, 2, 4]) >>> >>> a= [1,2,4] >>> b = a >>> a += [5,3] >>> a,b ([1, 2, 4, 5, 3], [1, 2, 4, 5, 3])
a = a + L と a += L が等価じゃないのか 気を付けないとうっかりしてるとはまるところかも
ん? a =+ L にすれば?
これは嫌な仕様だなあ 等価と思うよな普通
list が a = a + L と a += L で同じ挙動になって欲しいのか、 それとも全てのケースで a = a + L と a += L が同じになって欲しいのか、 それとも単純に知らないとハマるって話なのか、どれなんだろう
Tupleとの対比での話だから 無理やり言いがかり感もある
そだそだ
>>166 もちろん後者だよ
a += 1はa = a + 1のシノニムという認識は
この業界で一般的なものだからな
この業界では a = a + 1 は、++a a++だけどな
三択の回答で「後者」とか言う奴は、プログラマーには向いてないだろうな…
そうだね それに「この業界では常識」なんて非パイソン世界からパイソン見てるし。 こういう人は向かない
173 :
デフォルトの名無しさん :2013/05/06(月) 14:36:52.23
>>171 昨日の松井の人生劇場で
小学生時代に女子アナから
「後ろから何番目ですか?」
って聞かれて答えられず沈黙して
「一番後ろだよねっ!!」
ってフォローされて
やっと頷いていたのを思い出した
Matsui も女子穴もプログラマーじゃないからどうでもいい。
寄ってたかって揚げ足取り発言ばっかり こんな性格腐ったやつらがプログラマー向きというなら 向かなくて結構だわ
その点は大丈夫そうだよ
>>176 追い打ちか
あんたもろくなもんじゃないな
遠吠えが上手だね
みんな沸点低すぎだよ 素数を延々返し続けるコードでも書いておちつけ
精一杯のwit
#!/usr/bin/env python # -*- coding: utf-8 -*- import sys import codecs sys.stdout = codecs.getwriter('utf_8')(sys.stdout) while 1: print u'素数'
今日GW最終日だからかどこもヒデェ
ヒデよりロザンナ
codingにutf-8を指定する例が多いように思うけど OSシェアからすればcp932指定が圧倒して良さそうなものだが…(自分はそう) もしかしてWindowsでPython使ってる人は少ない?
cygwin版を使っているので当然utf-8だ
どうせ全部u''にするから関係ない
>>184 地球規模で言えばcp932なんてどマイナー。
OSごとにコード変更するほうが面倒 全部utf-8でおk
utf-8を指定する人が多い事よりも emacsの為にわざわざ-*-とか書く人が多い事のほうが不思議
入門用の本やサイトでそれ載せてるのが多いとかじゃない? 個人的には emacs 使ってるけど # coding: utf-8 が好き
>>184 日本人でPythonがまず物好きですし
そんなこといってはいけませんよ
>>191 俺エンドユーザー部門にいて
運用効率化のためにPythonで小ツールを作っているんだけど
出入りのIT業者の人にこれ何と聞かれて
Pythonて言語だよと答えたら知らなかったんだよな…
IT業者「ダイキンのマスコットかなにか?」
>>193 >出入りのIT業者の人
詐欺まがいのドカタに何期待してんだ
>>194 (。・-・) タプルン
゚し-J゚
(((。・-・))) プルルン♪
゚し-J゚
(・-・。) ルン♪
゚し-J゚
198 :
デフォルトの名無しさん :2013/05/09(木) 16:21:46.10
Pythonでコード書くバイトを探したけど、見つからなかったw
リストから重複値を洗い出す方法を探しているんですが 見つけたサイトのコードの解釈でアドバイスください。 a = [1, 2, 3, 4, 5, 5, 1] t = set() [x for x in a if x in t or t.add(x)] #=>[5, 1] このif文の解釈は、 「もしxがtまたはt.add(x)の値に含まれるなら」 でいいんでしょうか。 t.add(x)の値は常にNoneなので、実質の比較は x in tのみで行われており、t.add(x)は条件式の形を 取っているものの、実質は値の格納を行うためだけの 式というのなら、何とも唸ってしまう巧妙なコードですね。
ブール演算子の優先順位は低いので (x in t) or t.add(x)と等価
むむむ、このorはifの条件つなぎではなく ブール演算なのですか。 True or NoneがTrueになることを利用している? この辺、初心者にはなんとも難しい。 勉強になりました。
202 :
デフォルトの名無しさん :2013/05/10(金) 23:24:21.55
200は(x in t)がfalseならt.add(x)すると言ってる
条件つなぎではなくブール演算ってどういう意味ねん
なるほど勉強になった。
>>199 少し補足すると
a or b
はaが真ならbは全く評価されない。
この場合、aが偽のときだけt.add(x)が実行される。
>>202 マジですか?
(x in t) がTrueでもFalseでもt.add(x)は実行されるんじゃ?
>>203 当初、
「if (x in t == True) or (x in t.add(x) == True)」という意味に
解釈していて、それを条件つなぎと呼びました。
しかし、if ((x in t) or t.add(x)) == Trueという意味らしいので
それをブール演算と呼びました。
短絡評価っていう仕組みのためx in tがTrueならorの後ろは評価されない
208 :
デフォルトの名無しさん :2013/05/11(土) 03:50:12.31
もっと突っ込んで言えば None が False であることも利用している
209 :
デフォルトの名無しさん :2013/05/11(土) 03:53:06.29
>しかし、if ((x in t) or t.add(x)) == Trueという意味らしいので 違う if ((x in t) or t.add(x)) is True という意味
210 :
デフォルトの名無しさん :2013/05/11(土) 05:49:51.66
頭のxがわからないんだけど for (x in a){ if (x in t){}else{t.add(x) }
211 :
デフォルトの名無しさん :2013/05/11(土) 05:53:12.94
ミスって途中で送信しちまった 頭のxがわからないんだけどわかりやすくすると for (x in a){ if (x in t){ #何もしない }else{ t.add(x) } }
out = [] for (x in a){ if (x in t){ out.append(頭のx); }else{ t.add(x); } }
213 :
デフォルトの名無しさん :2013/05/11(土) 05:55:32.82
バカみたい
215 :
デフォルトの名無しさん :2013/05/11(土) 05:59:29.24
最近荒らしまくってるjavascripter厨か
216 :
デフォルトの名無しさん :2013/05/15(水) 07:45:34.64
今さっき3.3を始めたばかりなんですが print ("python")とやってtest01.pyで保存し python test01.pyと入力しても エラーとなり、python test01.py ^ ここから何も進みません どうすればいいでしょうか
エラーメッセージを読む
218 :
デフォルトの名無しさん :2013/05/15(水) 08:06:17.49
なんかcdでプログラムの保存先フォルダ入力したら出来ました・・・ でもいちいちこれ入力しなくてはいけないんでしょうか?
知るかボケ死ねカス
220 :
デフォルトの名無しさん :2013/05/15(水) 08:50:25.65 !
これはひどい。 さすがに超初心者以前だな。
>>218 はい
でもそれはwindowsのPATHの問題なのでもうここには来ないでくださいね(o^−^o)
問題の切り分けができたら初心者じゃないだろ
python3で治ってるか知らんが プログラムの保存先フォルダ名に 日本語が混ざってると起動後に モジュールパスを拾えないバグがあったな
>>218 次に質問するときはコマンドラインやエラーを略さず貼って
Windows ならコマンドプロンプトのショートカットのプロパティに
作業フォルダを指定できたはず
225 :
デフォルトの名無しさん :2013/05/15(水) 19:04:41.65
226 :
デフォルトの名無しさん :2013/05/16(木) 23:30:22.03
ファイルから読み込んだデータはすべてstr型になりますが、 これをstr型 int型 float型にそれぞれ自動的に変換してくれるモジュールがあれば教えて下さい。
pickle あるいは yaml (型付きをサポートしているバージョンのもの) あるいは ORM
228 :
デフォルトの名無しさん :2013/05/16(木) 23:53:35.39
>>226 です。
ファイルはcsvやtsv等で、str型 int型 float型がごたまぜになっており、
こちらからファイルの仕様の指定はできません。
馬鹿には無理 ですね わかります
条件後出し はい終了
>>229 こういう書き方よくみるけど、
余程頭がわるいんだね
よくわかります!
バカ丸出しの演繹頭
>>226 です。
自己解決致しました。
失礼しました。
233 :
デフォルトの名無しさん :2013/05/17(金) 23:03:43.92
きれいな処理はきれいなデータから
単位までセルに入力されてるスプレッドシートとかデータベースとか冗談じゃないよ
型を変換ってなんか意味あんの? 変数の型で分岐するコードでも書いてるとか?
使うときにint()しないといけないのが手間だからです。
一回書けば終わることを手間だって言ってんのか
240 :
デフォルトの名無しさん :2013/05/18(土) 01:23:05.45
>>226 自分でモジュール作って、ファイルから読み込んだデータを全部int()処理する命令でも定義すれば?
句読点とですますだけ合わせれば簡単に釣れそうだなここ
よく釣れますよ
243 :
デフォルトの名無しさん :2013/05/18(土) 02:58:52.36
python3の入門サイトでおすすめあれば教えてくだされ
公式
245 :
デフォルトの名無しさん :2013/05/18(土) 13:05:08.31
>>241 全部str型の読み込みデータをstr等に変換
…の部分には気付かないフリしながら釣られてやるのが高級魚ってもんです
246 :
デフォルトの名無しさん :2013/05/18(土) 13:11:04.99
【質問】 複数PDFファイル(300個)をマージするスクリプトを実行すると、 ファイルを開きすぎ、という以下のエラーが発生して、止まってしまいます。 どう対処すれば良いでしょうか。アドバイスよろしくお願いします。 「IOError: [Errno 24] Too many open files: '149.pdf'」 【ソース】 import os from PyPDF2 import PdfFileWriter, PdfFileReader output_pdf = PdfFileWriter() for f in os.listdir('.'): if f[-4:] != '.pdf': continue else: input_pdf = PdfFileReader( file( f, 'rb') ) output_pdf.addPage(input_pdf.getPage(0)) output_pdf.write( file('merged.pdf', 'wb') ) outputStream.close() 【環境】 OS: Mac OS X 10.8.3 Python: 2.7.2 外部ライブラリ: PyPDF2
248 :
デフォルトの名無しさん :2013/05/19(日) 23:04:33.30
for f in os.listdir('.'): if f[-4:] != '.pdf': continue r = file( f, 'rb') input_pdf = PdfFileReader(r) output_pdf.addPage(input_pdf.getPage(0)) r.close()
249 :
247 :2013/05/19(日) 23:42:57.87
>>248 レスありがとうございます。
スクリプトをそのように書き換えたところ、別のエラーが発生しました。
「ValueError: I/O operation on closed file」
output_pdf.write( file('merged.pdf', 'wb') ) でmerged.pdfを書き出す前に、
file( f, 'rb' )のストリームを閉じてしまうとダメなようです。
250 :
デフォルトの名無しさん :2013/05/20(月) 00:07:42.27
一旦中間ファイルこさえたらどーなのさ
全部メモリに読み込めばいいじゃん
アホな仕様だな
254 :
247 :2013/05/20(月) 13:04:24.86
>>252 まさにそれでした!
Mac OS Xでは、ulimit -nのデフォルトが256と非常に小さいようです。
ulimit -n 512 に設定して、問題のスクリプトを実行したら何のエラーもなく動きました。
手軽に使えるシンプルなPDFライブラリって、PyPDF2くらいしか見つからなかったんですよね。
他のライブラリは、いろんな機能があって複雑すぎる…。
みなさんありがとうございました。
駄目なライブラリに時間とられるくらいなら いろんな機能を理解するほうがマシ
2.7.3の正規表現について [^\s]とやると空白文字以外OKということになるようなのですが [^\s\(]とすると空白文字と半角丸括弧始以外OKとなります。 これを空白文字+半角丸括弧始の組み合わせのみ除きたいのですがどうすれば良いのでしょうか?
(?!\s\()
>>> a ['0010006', '0030000', '0000013', '0030100'] この時、データの1〜3桁目の昇順かつ4〜7桁めの降順にソートしようとして 以下のようにしたら、結果が期待通りではありません。 どこが悪いんでしょうか >>> sorted(sorted(a, key = lambda k: k[0:3]), key = lambda k2: k2[3:7], reverse = True) ['0030100', '0000013', '0010006', '0030000']
sorted(sorted(a, key=lambda k: k[3:], reverse=True), key=lambda k: k[:3])
>>261 サンクスです
優先順位が後の方のキーで先にソートするということ?
頭がおかしくなってきた…
馬鹿には無理
>優先順位が後の方のキーで先にソートするということ? 当たり前だろw
当たり前だが自明ではない
>>264 その当たり前の領域に登るまでが
初心者には茨の道なのですよ…
まあこれで一つ賢くなれました
事務でよく出てくる処理なので助かります
事務方なら浮動小数点数の扱いに注意な
sorted(a, cmp=lambda l, r: cmp(l[:3], r[:3]) or cmp(r[3:], l[3:]))
何でお前ら2回もsort呼ぶの?無駄だろ >>> data.sort(key=lambda x:(x[0:3], int(x[3:7]))) >>> data ['0000013', '0010006', '0030000', '0030100'] >>> data.sort(key=lambda x:(x[0:3], -int(x[3:7])) ) >>> data ['0000013', '0010006', '0030100', '0030000'] あとcmpよりキー導出結果がキャッシュされるkey使え
無駄な改行が入ってしまいましたごめんなさい謹んでお詫びしますごめんなさい
βακα...〆(:D)rz
272 :
260 :2013/05/25(土) 15:44:53.10
>>269 どうみてもすぐそこサンクスです
ほんとうにありがとうございました
サンクスねえ県disってんのかメーン
>>269 すごいっす勉強になります
こちらの方が優先順にキーを書けるので
わかりやすいかも…
あと「キー導出結果がキャッシュされる」の意味を
よろしければ教えてもらえませんか
キャッシュと言うより、シュワルツ変換だな。
要素がintに変換可能って要件はどっから出てきたんだ
そう言えば2〜3日前に、プログラマーは余計なことに気づいて自ら仕事を増やすって記事を読んだな
そんな事、プログラマーに限らんだろ
むしろそれで飯食ってんだから当然だろ 業務にイチャモン付けてバグだらけのシステム押し付けるのが仕事ですから
さすがウジムシの集まりだ
そんなに誉めるなよ。照れるじゃないか。
a = [ {1,2,3}, {1,2} ]というセットデータを持つリストがあるとして、 他のメンバに完全に含まれてしまうメンバを除外するには どうすればできますか (この場合、{1,2}が除外されて{1,2,3}のみ残るようにしたい)
>>282 a はリスト。他のメンバもリストなら、リストは順序が決まっている。
a[0] で良いのかな?
集合論的な話じゃねえのかと思ったが違うんだろうか
>>282 > a = [ {1,2,3}, {1,2} ]というセットデータを持つリストがあるとして、
リストを reduce するとして, 評価関数が, 各集合の長さ比べて,
長い方.difference(短い方)
じゃダメなん?
nonlocal 的なものは必要になるかもしれんが...
説明がわかりにくかったようで… aの中の各セット同士を比較して 他のセットの部分集合となるものを除外したい ({1,2,3}, {1}, {2}, {3}, {1,2}, {2,3}, {2,4} なら、{1,2,3}と{2,4}が残る) 四苦八苦して今コードができたんですが、あまりに力技すぎるorz ------------------------------------------------------------ # set_reduce.py # セットをメンバに持つリストにおいて、各メンバ同士を比較して # 部分集合となるものを除外する a = [{1, 2, 3}, {1}, {2}, {3}, {1, 2}, {2, 3}, {2, 4}] def set_reduce(data): b = data.copy() c = [] for i in data: for j in b: if j < i: print('{}は{}の部分集合なので除外候補に追加する'.format(j, i)) c.append(tuple(j)) print(c) else: print('{}は{}の部分集合ではないので除外しない'.format(j, i)) for v in set(c): b.remove(set(v)) return b print('除外結果:{}'.format(set_reduce(a)))
適当 >>> a = [{1, 2, 3}, {1}, {2}, {3}, {1, 2}, {2, 3}, {2, 4}] >>> b = [False] * len(a) >>> b [False, False, False, False, False, False, False] >>> for i in range(len(a)): ... if b[i]: continue ... for j in range(len(a)): ... if i == j or b[j]: continue ... if a[i] > a[j]: ... b[j] = True ... >>> b [False, True, True, True, True, True, False] >>> [x for x, f in zip(a, b) if not f] [set([1, 2, 3]), set([2, 4])]
これはどう? def f(xs, y): if any(x.union(y) == x for x in xs): return xs else: return [x for x in xs if not x.union(y) == y] + [y] xs = [{1, 2, 3}, {1}, {2}, {3}, {1, 2}, {2, 3}, {2, 4}] reduce(f, xs, [])
>>286 勉強しました
>>> a = [{1, 2, 3}, {1}, {2}, {3}, {1, 2}, {2, 3}, {2, 4}]
>>> c = [a[0]]
>>> for i in a:
if not c[0].issuperset(i):
c.append(i)
>>> c
[set([1, 2, 3]), set([2, 4])]
>>286 もう1回
>>> a = [{1, 2, 3}, {1}, {2}, {3}, {1, 2}, {2, 3}, {2, 4}]
>>> c = [a[0]]
>>> for i in a:
... if not c[0].issuperset(i):
... c.append(i)
...
>>> c
[set([1, 2, 3]), set([2, 4])]
[x for n,x in enumerate(a) if not any(x.issubset(y) for y in a[:n] + a[n+1:])]
293 :
デフォルトの名無しさん :2013/05/29(水) 17:05:37.46
ファイルの文字をひとつずつ読み込むメソッドはありますか?
>>293 ,294
たぶん日本語だとうまく行かないから
import codecs
with codecs.open(file_name, 'r', encoding='utf-8') as f:
a = f.read()
print a[25]
python3 使えば import はいらない
'honyaku' を u'ほんやく' に変換するモジュールは何ですか? 無ければ明朝までに作れ。6時までだぞ。
297 :
デフォルトの名無しさん :2013/05/30(木) 05:19:46.75
メソッドはあるけどメリットはないな
298 :
デフォルトの名無しさん :2013/05/30(木) 23:19:36.02
file = open("text.txt") for char in file.read() print char close("text.txt")
joinの使い方がよくわからんです… 'A' と 'B' をカンマで連結して'A.B'を得たい時 ','.join('A','B')とやると TypeError: join() takes exactly one argument (2 given) となってしまいます
','.join(['A', 'B'])
('A`)人('B`)
','
>>299 ",".join(["A", "B"])
タプルの場合は
",".join(("A", "B"))
そのエラーは2つ値がある(2 given)と言っている
join( "A", "B" ) とカンマで2つ値が入っているから
>>296 ローマ字 ひらがな Python でぐぐったらそれっぽいのがでてきた
>>299 ",".join の引数は iterable (リストやタプルや文字列とか)をひとつ受けとる
",".join("A", "B") は引数ふたつ渡してるからエラーになる
",".join(["A", "B"]) や ",".join(("A", "B")) や ",".join("AB") だとうまくいく
ありがトン joinって、つなげたいデータが複数に分かれている時は 自分で連結してから与えないといけないのですか… ちょいと面倒ですね せっかくカッコの中に指定したのだから、いっしょに連結 してくれればいいのに
必要なら自分で myjoin でも作れば?
Twitterのbotを作ろうと思うのですが
309 :
308 :2013/06/01(土) 10:57:43.13
途中で書き込みしてしまいました。 Twitterのbotを作ろうと思うのですが RSSから記事を作成し投稿するプログラムはできたのですが 前に投稿したとかのチェックってどうやればいいのでしょうか? 前に投稿した記事をTEXTに残して比較して投稿 他にいい方法があれば教えて下さい。
自作C++アプリにPythonインタプリタを組み込もうと思ってるんですけど、 Pythonをインストールしていない環境で動作させるのに必要なファイルと その配置のやりかたなどを説明しているドキュメントってどっかにないですか?
311 :
デフォルトの名無しさん :2013/06/01(土) 14:36:57.98
>>309 前に投稿した記事をdb(のkey)に残してkeyが既存でなければ投稿
>>309 全部の記事にタイムスタンプ付けて
違う記事と看做して投稿
>>311 ありがとうございます。
データベース勉強してみます。
315 :
309 :2013/06/01(土) 14:45:39.44
>>312 それだと更新チェックするたびに投稿されてしまうのでは?
RSSリーダーみたいに未読かどうか
feedparserでチェックできればいいのですが
316 :
309 :2013/06/01(土) 14:47:17.24
なんだ 同じ記事連投したらtwitterからペナルティあるから それを回避したいのかと思った
>>282 [s for s in lst if not any(s < x for x in lst)]
319 :
309 :2013/06/01(土) 15:10:29.07
>>317 ありがとうございます。
説明不足ですみません。
比較をする時の == と is の使い分け基準が知りたいのですが 公式情報のどこかに書いてあったりしますか? どちらでも通ることが多いので困惑します
>>320 Pythonで変数へ値を代入するというのは、変数に値が入るのではなく
値がメモリの中のどこかにあって、その場所を変数が指すような状態。
isでの比較は、2つの変数が同じ場所を指しているかの比較。
==での比較は、指している先の値が同等かの比較。
a = [1]
b = [1]
この場合、aとbはたまたま同じ内容のリストを指しているけど、
それは値がたまたま同じなだけで、実態は別物のリスト。
この2つの比較では==ではTrueだが、isではFalseになる。
a.append(2) をすると、aは[1,2]になるが、bは別物なので[1]のまま。
a = [1]
b = a
この場合は、aとbが同じリストを指しているので、isも==もTrue
a.append(2) をすると、bも同じリストなので[1,2]になる。
お前の意見なんか聞いてねーよ 公式情報のどこか言え
うーん、そうしますと ifでNone や Trueとの比較をする時に is を使っているコードを見ることが 多いように思うのですが、これは値としてもオブジェクトとしても同じなので == でも is でもどちらでもよく、好みで is を使っているだけということですかね。
True とは比較するなって先輩が言ってた
>>325 好みのようで好みと言えない…かな
== はオブジェクトごとにカスタマイズが可能な演算子
なのでもしかするとそのオブジェクトはNoneやTrueと==で比較した時の動作が
普通のオブジェクトと違うかも知れない
対して is はオブジェクトによって動作が変わらない
なので、オブジェクトごとに想定してる動作で比較させたいのか
どんなオブジェクトだろうと何指してるかで比較させたいのか
…ってところでも変わってくるんよ
特にNoneなんかは無いことのチェックだと思ったらチェックになってない可能性を
嫌ってisでやることも多いんじゃないかな
PEP8で発見シマスタ グイドさんが定めたルールなら従うしかないですね - None のようなシングルトンとの比較には、いつも「is」や「is not」を 使うべきである。 また「if x is not None」という条件を意図して「if x」と書くことは避 けること。たとえば、デフォルトで None が代入される変数や引数に、他 の値を持っていることをテストするときに使える。他の値には、False も 含まれることに注意。 - ブール値を、== を使って True や False と比較しない。 ○ if greeting: × if greeting == True: ? if greeting is True: 三例目の?は本文では骸骨マークだった。最悪ということか。 Trueもシングルトンだと思うので意外だった
331 :
330 :2013/06/03(月) 10:47:18.22
すいません追加で質問ですが
youtubeのような動画サイトやfacebookのようなSNSサイトを構築する場合、
>>330 で必要とされる知識に加えて更に必要な知識はどんどん出てくるものなのでしょうか?
http、html、css、javascript(ajax)、Webアプリケーションフレームワーク、Webサーバー、データベース くらいか 適性によるけど2年くらいか
あとUI、UXも ただUIとUXは、アンチパターン潰すだけでもそこそこのクオリティになるので比重低い
ありがとうございます!とりあえず一通りやってみます
335 :
デフォルトの名無しさん :2013/06/06(木) 01:03:58.54
モジュールを使ってリストを操作するときに import os for i in range(10) stats = os.stat("/home/directory/L[i]") みたいにL[i]を使うことができますか?
Lって何だよどっから出てきた
これで駄目な理由を60字以内で述べよ os.stat("/home/directory/" + L[i])
要点はそっちじゃなくて、リストを文字列内で変数展開できるかどうかを聞きたいんじゃねえの?
えー、それはないかな・・・
暗黙に展開する機能はないので%かformatを使う "/home/directory/%s" % L[i] "/home/directory/{}".format(L[i]) 現在のコンテキストの変数を展開するには以下のようにする '{__name__:}'.format(**locals())
>>337 L[i] が str じゃないと TypeError で落ちるかな。
それ以前にこれやめろ >for i in range(10) もうプログラミング入門にCはやらせないでいいと思うわ
>>343 なんで? イテレータはそのためにあるものじゃないの?
インデクスを使わずに、forで直接リストを走査しろってことだろう
346 :
344 :2013/06/06(木) 19:09:00.08
enumerate最強説
インデックスを使うなとか言ってるうちはニワカ enumerateを諳んじてやっとPython初心者の一歩手前
インデックス使うのって走査しながらリストを弄る時くらいだな
enumerateはつづりが長いうえに enumarateとか enamurateとかタイプミスしまくるので苦手
351 :
デフォルトの名無しさん :2013/06/07(金) 20:14:44.77
>>343 「初めてのpython」にはこの手の式が沢山出てくるけど、
使ってはいけないのかい?
>>351 どうやって書いても良いと思うよ
Pythonicに書くならとかは超初心者スレじゃないとこの話だと思う
Pythonic的にレスするならコードでレスするわけだし
その人Pythonicじゃないから
てゆーか
>>343 はいきなり何なんだ
言語のどんな機能を使おうが人の勝手じゃないか
>>335 の例だって、適当に10個だけ表示してみたい
というだけのことだろ
>>351 だから
>>345 ってことでしょ。
>>> import os
>>> for i in L:
... stats = os.stat('/home/directory/{}'.format(i))
range() 使うべき時と使う必要がない時とがあって、
必要ないときに使うと無駄だし頭悪そうだよねって話。
for i in range(len(L)): hoge(L[i])
>>354 > 必要ないときに使うと無駄だし頭悪そうだよねって話。
大きなお世話だ
ここはそんな評論を質問者にぶつけるスレなのか?
>>356 お前仕事でコーディングしてるならかなり嫌われてるぞ。
気を付けた方がいい。
>>357 そんな話じゃねえよ
たまたま10個ファイルを表示する例を示しただけなのに
rangeを使うなって批判をするのは的外れすぎるだろ
まして
>>343 なんて肝心の質問には答えもせずにこれなんだぜ
求められてもいないのに、人のコードを勝手に添削・批判するのはやめろ
ここは初心者が超初心者を貶めるスレだから。
>>354 10個取り出したいからrange(10)なんでしょうに
>言語のどんな機能を使おうが人の勝手じゃないか 頭悪そう
for e in L[:10]:
頭いい人は質問に答えてあげればいいじゃん
>>357 頭悪そうだよねってのいらなくね?
職場でもそんなこと言ってんの?
超初心者のコードをネタにした雑談じゃないの
頭悪そうな雑談だな
>>365 だったら次から
>>1 にそう書いとけ
胸くそ悪いスレだ
もう見るのやめるわ
プログラミングの質問スレってさ言葉は半分以下でやるもんだと思う コード書いてコードで答えるみたいな 言葉だけの質問とか回答するからこうなる(๑•́ ₃ •̀๑)
>>368 今回のはそもそも回答になってないからさ
回答したうえで、やんわりと「rangeはあまり乱用しない方が…」と
付け加える程度なら、スレも穏やかに流れるのに
rangeを見ただけで脊椎反射でダメ出しするコミュ障のコード馬鹿が
いるからこうなる
print('いつまでいるんだこいつ')
>>370 野次馬はすっこんでろ
ろくなスレ制御もできない日和見野郎が
>>371 for i in range(10):
print('Fuck you ass hole!!')
>>372 print "Fuck you ass hole!!\n" *10
>>372 今の流れではこうだった
for i in ["Fuck you ass hole!!"] *10:
print i
じゃあな 質問スレの主旨を逸脱した コード添削・スタイル押しつけ厨がいたら おまえらも無視しないでしっかり諫めろよ ここは質問スレだからな まずは聞かれたことに答えるのが先決だ
> range() 使うべき時と使う必要がない時とがあって、 馬が門前の念仏を唱えだした。
while派のオレは高みの見物
俺無宗教だから
必要な数だけコピペする俺は過激派
def a(): #何か処理1 th = Thread(target=b) th.start() #何か処理2 def b(): #何か処理3 関数a,bがあり、bを別スレッドとして呼び出しているとします。 #何か処理2 が終わったときに #何か処理3 が続いている場合、関数aは終了になりますか? bの処理の完了を待って、終了とかに成るのでしょうか
383 :
382 :2013/06/08(土) 20:32:17.66
#何か処理2は、#何か処理1やthと同じインデントの間違いです
どうせ使うならスレッドよりマルチプロセッシングのほうが良くない?
処理の内容による GIL開放する処理をするならthreadingでいいし、そうでないならmultiprocessingの方がいいね
てゆーか
>>385 はいきなり何なんだ
言語のどんな機能を使おうが人の勝手じゃないか
>>382 の例だって、適当に並列処理してみたい
というだけのことだろ
>>382 関数を抜ける程度でスレッドの終了を待ったりはしない。
待ちたいときは、 th.join() を何か処理2の後に入れる。
二つの数値をタプルで受け取り、比較して小さな方を返し、 同じならばNoneを返すという関数の定義は以下でよいでしょうか? うまく動いているように見えるんですが、コマンドラインで適当に叩いていたら できあがったものなので、正直自信がありません ラムダ関数の中ってこんなにifを重ねられるんでしたっけ? smalll_choice = lambda x: x[0] if x[0] < x[1] else x[1] if x[0] > x[1] else None >>> small_choice((2,1)) 1
ラムダ関数って言い方は正しいの?
>>391 lambdaはラムダと読むものだと思っていましたが違うんですか?
ラムブダ
ラムダじゃなくてラムダ関数のことを言ってるんだけれども
lambda を lambda と言った瞬間に lambda は lambda でなくなるのぢゃ。
>>394 私はラムダ関数以外の呼称を知りませんね
よければ正しい呼称を教えてください
398 :
390 :2013/06/09(日) 08:08:37.11
質問に答えろクズども
399 :
390 :2013/06/09(日) 08:10:28.68
自決しました
x[0] if x[0] < x[1] else (x[1] if x[0] > x[1] else None) と解釈されていれば問題ない (x[0] if x[0] < x[1] else x[1]) if x[0] > x[1] else None だともちろん誤動作する
>>390 の質問は、
「ラムダ関数の中ってこんなにifを重ねられるんでしたっけ?」
であるが、
この場合の論点はそこにあるのではなく、
「三項演算子のif-elseにおける優先順位はtrue項かfalse項か?」
と質問するべきなのであった。
>>390 タプルの場合 x, y = (25, 50)
リストの場合 x = [25, 50] x[0] = 25 x[1] = 50
lambda(ラムダ式)の場合
small_choice = lambda x,y: x if x < y else y if x > y else None
どうしてlambdaの中を複文に出来ないのはなぜ?
ありがとうございます 自分は三項演算子というのを知らなかったのですが 今回のコードが偶然その構文?に合致する形になっていたようです あとラムダは関数ではなく、無名関数オブジェクトを作る特殊な式なのですね 合わせて勉強になりました
>>403 そういう仕様だから
そういう仕様にした理由は構文解析が面倒だから
長大なラムダ式を引数とかに使わないためだろ そういうのは名前を付けて定義すべきというのが哲学
>>397 lambdaは無名関数であってラムダ関数とは言わない
ラムダ〜と言いたかったらラムダ式と言うのが良い
ラムダ文とかラムダ文字列があればもっとラムダって言えるのに
やめなさい
おまいら無駄話やめろ。
sc = lambda x:list(set(x))[0] if len(list(set(x)))>1 else None
sc = lambda x: (lambda y: y[0] if len(y) > 1 else None)(list(set(x)))
lambda x, y: None if x == y else (lambda x, y: x if x < y else y)(x, y)
>>> sc = lambda a: (lambda x, y: None if x == y else (lambda x, y: x if x < y else y)(x, y))(a[0], a[1]) >>> sc((2, 1)) 1
なるほど、すばらしくシンプルですね!ありがとうございます。
そうそうこういう流れでいいんだよ
from operator import eq sc = lambda x: None if eq(*x) else min(x)
sc = lambda x ,y: None if x == y else x if x < y else y
そりゃeqをそこで定義するかライブラリから呼ぶかの差だろwwwwwwwwwwwwwwwwwwwwwwwwwwwwww
質問です。 関数はネストできますが、ネストする必要がある場合が想像出来ません。 ネストした方が良い例があれば教えてください。
popen2.popen3 って obsoleted ですか? 代わりに subprocess.popen を使うべきですか? それはどうしてですか?
その関数内でしか使わない関数が外側のグローバルな名前空間で宙ぶらりんになるのが気持ち悪いから。 別に必然性はないけど
>>422 関数もオブジェクトだから
関数の中でラムダ式が使えないと不便だし
lambdaの話題ついでに質問いいですか? lambdaの中でprintが使えないんですがなんでですか? hello = lambda: print "hello" 2.7を使ってます
printは命令だからです
lambdaは値を返さなければいけないので値が返せない命令を書くことはできない Python3はprintが命令から関数になってNoneを返すようになったので書ける Python2.7でもfuture_importを使えばprint関数にできるはず
>>422 re.subに渡す関数を内部で定義したりすることはよくある。
読みやすさ的にlambda式は基本使わないな。
>>> from __future__ import print_function >>> hello = lambda: print("hello") >>> hello() hello
433 :
428 :2013/06/09(日) 19:09:32.41
なるほど 良くわかりました、ありがとう
434 :
422 :2013/06/09(日) 19:13:13.34
名前を見せたくないのは何となく理解出来ます しかし、そのまま関数じゃなく実行文を書いても良いですよね? 関数としてどっかで呼びたいから関数にする それがネスト元の関数内だけで呼び出したい? でも関数にしないでそのまま書けば? 2回以上呼び出す必要がなければネストしてまで関数にするのはやっぱり名前?
・2回以上同じものを書くのは邪悪だから ・処理をグループ分けして見通しを良くするため ・クロージャー的な使い方のため
>>434 関数を作るのは関数が必要だから。
必要ないのに無理矢理関数にしたら逆に分かりにくくなるぞ。
マジな話 そこまで考えるに至ってないよ 時間の無駄だから飛ばして次に進むといい
439 :
422 :2013/06/09(日) 19:52:17.43
すみません
>>435 さんの例がわかりやすいです
これが必要な時が知りたいのです
def x(a):
def y():
print(a)
return y
x1 = x(1)
x2 = x(2)
x1()
x2()
--------------------
1
2
def y() は、このままの例のコードであれば必要がないですよね?
どうも見てるネストのコードがほぼ3行くらいであってもなくてもみたいな感じだったので
>>437 さんであれば
>>435 をどう見るかが知りたいのです
マジレスすると書きやすいからそうなってるってだけだよ ラムダだっていちいち関数に名前付けるのめんどくせえ!ってためだけにあるし
>>439 os.walkでカスタムエラー処理してみろ
条件
・エラーが発生しても無視すること
・ただしprintでログに記録すること
・2.7で行い、future_importを使用しないこと
>>439 def y()が無いとx(1)した時点でprintされちゃうでしょ
必要なくないよ
422のPC叩き壊して二度とプログラミングに関わることがないようにしたい 切にしたい
>>439 この例だけ抜き出して、これが必要かと問われれば、こんな無意味なコードはない。
ただ、実際に何かを作ってる時に、具体的な目的や条件、制約があると
これと同じようなことがしたくなる事はきっとあると思う。
今それが思いあたらなければ無理してネストした関数にこだわる必要はないと思うよ。
ワロタけどライセンス的に駄目じゃねえのw
447 :
422 :2013/06/09(日) 22:13:31.02
たくさんのレスありがとうです
必要が出てこない限り理解出来ないと理解しました><
で
>>445 のコードではネストの関数内でやっていることがあまり好きではないですけど
その後の関数での記述が簡潔に見えるのは理解出来ました
プログラミング方法の好みなんてひとそれぞれで分かれるけど ネストの深さが動的に変化するようなときに困るから好きじゃない
ネストの深さが動的に変化???????????????????????????
再帰は嫌いじゃないですよ ソースでネスト固定しちゃうと アルゴリズム上のネストが 実行時に変えられないから 問題だと言ってるんで
何が問題なのかさっぱり分からんw
確かに分からん
よく分かんないけど*.pyを書き換えてevalでもしてんのか
俺用語でスコープをネストと呼んでんじゃないかなーと思った
それにしても分からん
import xml.dom.minidom doc = xml.dom.minidom.Document() root = doc.createElement('root') doc.appendChild(root) str = doc.toxml() print(str) Python3.3.2です このコードを実行すると<?xml version="1.0" ?><root/>のように勝手にdoctypeが付いてしまいます。 <root/>というふうに要素のみ出力したいので、doctypeをつけないようにする設定はな方法を教えてください 応急処置でxmlを文字列で変数に格納して置換でdoctypeを消してますが、この方法しかないでしょうか?
不動点コンビネータ使えば再帰関数とかいらんしwww
>>457 doc.documentElement.toxml() や root.toxml() かなあ
もし特別な理由がないのなら ElementTree や lxml 使ったほうがいいかも
他の言語の解説だと 文字列を""←ダブルクォーテーションで囲ってるものが多いのに Pythonは何故''シングルコーテーションが多いのですか? シングルじゃなきゃ書けないわけでもないみたいなのに、不思議です
ダブルを使う理由もない。ダブルを使いたければ使えばいい。何の不思議もない。
>>462 どういうことでしょうか?
英字版キーボードだとシングルコーテーションの方が押しやすい位置にあったりするのでしょうか?
日本語のキーボードだと、Shiftと離れた位置にあるので、ダブルクォーテーションの方が押しやすい気がします
はあ?お前には片手しかねーのか?
>日本語のキーボードだと、Shiftと離れた位置にあるので、ダブルクォーテーションの方が押しやすい気がします イミフ
>>465 すみません
日本語のキーボードだと、(シングルコーテーションが)Shiftキーと離れた位置にあるので
(Shiftキーと近い位置にある)ダブルクォーテーションの方が押しやすい気がします
色々省きすぎました
シングルもダブルも、shift押しながらじゃないと打てないので
Shiftと近い位置にある記号の方が良いのではないかと。
もちろん両手使えばいい話ですが"クォーテーション使った後にすぐに次の動作に移る際
右手のポジションが数字キーの位置にあるのはあまり宜しくない気がするのです
別にどっちでもいい どっちでもいいから両方使えるんだよ
何を言っても無駄。
誰が書いても同じソースコードになるとかいうのがpyてょんさんの売りじゃなかったんですかねぇ
それを指摘するのにダブル・シングルクォーテンションを引き合いに出す馬鹿は初めて見た
だって1番多用するところだろ
それで少しでも可読性を損なうとか思ってるならプログラミングやめたほうが良いよ
他人からプログラム引き継いで書くときにさぁ 俺が更新したとこだけダブルクォーテーションだと気持ち悪いだろ!!
コードの一貫性を破壊するお前が馬鹿すぎるだけ
何故シングルコーテーションを使うのか 理由を聴いてるんだよ俺は 余計な回答してんじゃねーぞ ココはヤフー知恵袋以下か!
理由があってもお前にとっては意味ないよ お前が気に食わない流儀があるという事実は変わらない 嫌ならPythonを使わなければいいだけ
関数名や変数名を大文字で始めるのは?
478 :
デフォルトの名無しさん :2013/06/11(火) 07:53:28.70
>>460 rubyかじっててpythonはまだハローワールドだけど、ダブルで囲った文字列内だと式、変数展開とか色々出来て、シングルだと単なる文字列しか出来ないのと関係あったりするのかな
それとも欧米主力言語の特徴なんだろか
理由がないと御満足いただけない人って生きるのが辛そうだよね
既存の言語齧ってて新たな言語覚えようとするひとに 1.新しいものは新しいものとして新たに覚える 2.知ってる言語と比較しながら覚える タイプがあるみたいだけど どっちが効率良いんかね 2.で知ってる言語にやたらこだわるひとは時間を無駄にしてると思わないのかな
プログラミング言語を自然言語と単純に比較できるかどうか判らないが、 自然言語の場合、例えば日本語ネイティブのひとが英語とフランス語おぼえるとき、 先に英語を覚えてから英語との比較でフランス語を覚える手順をとると、 日本語<->フランス語のトランスレーションが直接できなくて、 毎回英語を経由する癖がついてしまうのが良くないって主張があるんだよね。 だから英語を知っててもフランス語を覚えなおすときは、英語のことは一旦忘れて 日本語から直接フランス語へのトランスレーションをできるようにした方が良い。
>>460 理由はHTMLを囲うときに
↓のようにHTML内部のダブルコーテーションを保ったまま文字列を書けるからってのが一つある
'<div class="foo"></div>'
HTMLがダブルなのはW3Cがそう決めたから
ちなみにソースはGoogleさんのJavascriptコーディングガイド
Pythonのコーディングガイドもあるけど、ここには書いてなかったと思う
http://cou929.nu/data/google_javascript_style_guide/ 自分で書くなら好きなもの使えばいいけど
プロジェクトに参加するなら、そのプロジェクトの流儀に従わないといかん
インデントの形式とかもね(スペースインデント(^p^)しーね!しーね!)
いやPythonは4スペが流儀だから
えー。俺は文字列リテラルは通常ダブルクオート。 ダブルクオートを含む文字列の場合はシングルクオート。 1文字だけの文字列をリテラルで書くときはシングルクオート。 複数行に渡る文字列の場合はダブルクオート3個連続。 と書き分けてるが、こういうのって少数派?
読む側からしたらシングルだろうがダブルだろうがたいして気にしないし 特別の事情がない限り好きにしたらいいのでは
>>485 みたいな文字型と文字列型を必死に区別しようとするC言語脳は死ぬまでどうにもならない
少数派で困ることがあったら言え
>>488 困らないが、仕事として少しだけ参加とかになると
その時だけ少数派で仕事するか多数派で仕事するかになる
自分だけで完結する仕事ならどっちでも関係ないが正解
ま、仕事の最初に確認しとけば良いはず
自分は普段の書き方と違う書き方も両方出来るから確認すれば問題ない
こだわりを持つべき箇所とそうでない箇所を理解するまでに
>>460 のような質問をするのは良いと思う
>>460 のように考えることが1度でもある人は優秀
叩かれるのわかってても質問出来るひとは伸びるよ
それをつぶそうとする人はとても多いけど、その人達は間違いなく凡人だからね
酷い自演を見た
>>485 C経験してるとそうなるのは判るけど
あまりそれにこだわってると
c = 'c'
if c == 0x43:
みたいなミスをやらかす
>>487 文字列型を区別するというか英語圏の人達はシングル ' を文字列で使うから
自然と文字列型にはダブル " を使うことが多くなる
これは区別というか習慣になっている
日本人は習慣になっていないから区別する必要も出てくる
ここを考える人とそうでない人との認識で話し合いしても噛み合わないだけ
>>492 いや、文字列型にシングルを使うって言ってんだろw
文字列型はダブル!という呪いに縛り付けられてるのはおまえだけ
お前だけが一人暴れてるんだから話が噛み合うわけねーわ。みんな普通に文字列型にシングルを使ってんだから
つーか、char型とstring型の話をしてるのに
なんでいきなり文字列と文字列型とか意味不明な話になってんだ?馬鹿すぎるだろ
標準ライブラリ読んだこともないんだろ? 読んでみ。全然統一されてないから。 一部の神経症患者意外こんなこといちいち気にしてないってこと。
え? 標準ライブラリはpydocがダブルで通常の文字列はシングルに統一されてるはずだけど
Pythonに「文字型」ってあんの?
一文字だけの文字列を区別するって思想が文字型を意識してるって言ってるんでしょう どうでもいい話だと思いますが
英語圏の人達はシングル ' を文字列で使うから〜とはいっても 一般的な文章とプログラムの文字列で同じお作法使うとは限らないよな 上に書いてあるとおり標準ライブラリの文字列はほぼシングルな訳でね
>>495 気にしてると疑問に思うは違うことだよ
疑問に思ったことを気にしてると思い込みたい君の思考がアスペに近い
程度は人それぞれ違うことを理解しよう
英語圏の人はシングル ' は a と同じ感覚 だから配列でもShiftを押さずに打てる
aHello It's Pythona , "Hello It's Python", 'Hello It's Python'
たぶんどこの国でコードを書くかで感覚は違ってくると思われる
アスペ君はきっとどこに行っても変わらないでいるだろう
469 名前:デフォルトの名無しさん[sage] 投稿日:2013/06/11(火) 04:01:42.93 誰が書いても同じソースコードになるとかいうのがpyてょんさんの売りじゃなかったんですかねぇ まあそのアスペがPythonのウリですから
シングルコートとエスケープは殺意が湧く程押しにくい。一票。
503 :
デフォルトの名無しさん :2013/06/11(火) 13:45:27.36
>>493 commandとかどこの方言だよゴミがwwwwwwwwwwwwwwwwwww
>Pythonは何故''シングルコーテーションが多いのですか? あなたが見たソースコードにたまたまシングルの利用例が多かっただけじゃないでしょうか?
When in Rome, do as the Romans do.
But I refuse.
そう言いながらも反応してるよ? ホントは押したいんでしょ?
通は for i in xrange(10) だよね
虎穴に入らずんば虎子に従え
穴があったら入れたい
511 :
デフォルトの名無しさん :2013/06/12(水) 03:00:38.12
アッー!!!
英語キーボードだとクオートはシングル/ダブルともリターンキーのすぐ隣の同じキーに配置 ダブルクオートはシフトキー押す必要がある 実際使ってると, シフト押すのめんどくさくなってシングルクオートを多用し始める
JIS配置を考えた奴は死ねばいい
死んでも配列は残るだろうが。意味ね〜
JIS配列を作って売ってる奴・使ってる奴は死ねばいい
意味の無さで言えばこの一連の流れが上回ってるわ
今日の python に感激したところ def function1(): 処理 time.sleep(60) 処理 while True: function1() function2() これでは function2 が即実行出来ない>< from threading import Timer while True:
>>518 うわーん途中送信><
from threading import Timer
while True:
Timer(0, function1).start()
Timer(0, function2).start()
function3()
と1行追加と数行の変更でスレッディング出来ちゃった最高٩(๑❛ᴗ❛)۶
という話でした
Django使ってる方いますか? テンプレートに妙な癖があって凄くイライラする d = {"apple" : 3} 例えばこういうdictを使ってテンプレートで表示しようとしたら、 {{ d["apple"] }} では駄目で、{{ d.apple }} としなくちゃいけない あとリストも {{ list[3] }} では駄目 なぜわざわざ普通のpython的な書き方とは異なる仕様にしてるんだろ 言語自体はRubyよりpythonの方が好きだけど、 webフレームワークに関してはDjangoってなんかすっきりしない仕様が多い Railsと比べると筋が悪いと言うか...
つーか他の奴触りだしたらDjango嫌いになった 所詮先発なだっただけだと今は思う
PythonはあんまWeb強くないね
>>520 気に入らなければ書き直せばいいじゃん
rails準拠のDjango with Railsって名前つけてさ
Dwango is piles
標準出力で文字列のある部分にだけ色をつけて出力したいです。、 出力の例:<S>私は</S><A>車に</A><V>乗る。</V> 「<A>〜</A>」を赤色にしたいです。 範囲指定をしての色の変換出力の方法を教えてください。
>>526 出力先の端末が ANSI エスケープを解釈してくれるなら
print "私は\x1B[31m車に\x1B[30m乗る"
うまくいかなければ環境を詳しく
>>527 ありがとうございます。
説明が分かりづらくてすみません。
出力の文章には<S></S><A></A><V></V>というタグが付いていて、
その間にある文章は毎回変わってしまいます。
>>528 # coding: utf8
import re
src = u"<S>私は</S><A>車に</A><V>乗る。</V>"
print re.sub(r'(<A>.*?</A>)', '\x1B[31m\\1\x1B[30m', src)
>>528 ありがとうございます。
プログラムを実行すると、
<S>私は</S>[31m<A>車に</A>[30m<V>乗る。</V>
と表示されました。
何がいけないのでしょうか?
>>530 > 何がいけないのでしょうか?
人の言うことを聞かない君の性格。
> うまくいかなければ環境を詳しく
あるいは都合のいいものしか映らない目
相変わらず質問者に辛辣な対応をする人がいるなあ… これじゃ誰も来なくなってしまうぞ
せめて言語仕様くらいは読んでこようよ
>>533 そう思うなら、君が答えてやればいいんじゃね。
>>535 そういう問題じゃないと思うなあ
罵倒や皮肉がぶつけられる中、
何事もなかったように二人で穏やかな
やりとりができると思う?
人間そんなに強くはできていないぜ
ここは、にちゃんだよ...
果たしてそうかな?
辛辣な対応っていうか、実も蓋も無い事を言う人がいるよね
Djangoのテンプレートってどうよ?っていう話題に対して
>>523 みたいに「じゃあ書き換えろ」とかくだらないことを言う人
別のフレームワーク使うしか選択肢はないと思うのだが
541 :
デフォルトの名無しさん :2013/06/14(金) 00:47:30.82
馬鹿には無理
>>539 どうって言われても書き換える以外どうしようもないじゃん
それとも慣れろって言えばいいわけ?
他の方法があるなら教えてあげてくれよ
d = {'apple': 3} d.apple でアクセス出来たほうが楽なんだけどな d['apple'] よりも 打ち込んでるキー数考えてもそうでしょ?
辞書と違うじゃんという話だろ 数字がインデックスの場合はどうすんの?
なぜわざわざ普通のpython的な書き方とは異なる仕様にしてるんだろ 言語自体はRubyよりpythonの方が好きだけど、 webフレームワークに関してはDjangoってなんかすっきりしない仕様が多い Railsと比べると筋が悪いと言うか...
インデックスじゃなくてキーか
初心者とかそういうのをぬきにして向いてないというほかない
WEB系のAPIとか中身辞書と似てるんだけど アクセスするのに d.apple みたいにするの多いと思うけど
俺はDjangoの開発者じゃないし 作者の心情を代わりに答えるボランティアでもない そんなに知りたければフォーラムに書いて来い
別に実際にそこが知りたいわけではなくて、 単にイライラを共有して欲しいだけだよ。 女がよくそういう話し方するだろ。
python
誤って書き込んじった。
>>551 designers って誰だよ。
個人がだれかじゃなくて、普段なんの生業に携わってる人なのよ。
554 :
デフォルトの名無しさん :2013/06/14(金) 02:37:06.60
普段は女のケツ追いかけまわしてます。
jinja2はできるからdjango-jinjaでも入れれば jinja2はDjangoのテンプレートシステムから分岐したテンプレートエンジンだから使用感は変わらん
557 :
デフォルトの名無しさん :2013/06/14(金) 07:43:33.99
使用感変わってくれなかったら意味ない
>>531 すみません。
そのままコピーペーストして使ったのですが。
環境はWindowsでPythonのバージョンは2系の最新でコマンドプロンプトで実行しました。
Windowsで指定したプログラムを管理者として実行したいのですが shell=TrueにしてもUACが出ません どのようにして管理者として実行できますか? import subprocess subprocess.check_call('C:/program/mytool.exe', shell=True)
あらかじめ起動したいプログラムに管理者権限が必要ってマニフェストが埋めてあるか 起動したいプログラムの互換性の設定で「管理者として実行」を有効にしていなければ不可 上記のいずれを行なっていれば、shell=TrueでUACが出る shell=Falseだと起動できない
>>558 pyreadline入れて
>>> import readline, sys
>>> sys.stdout = readline.GetOutputFile()
>>> print "\x1b[31mtest"
>>545 お前のスッキリのためにあるわけじゃねーからだよ
書きやすさ優先だ
>>553 webデザイナーだろアホめ
Djangoで何つくってんだよおめーは
ニートの多い2ちゃんでは ぼっちでプログラミングしてて デザイナーと組んだことがないのも不思議じゃない そういうひとにはDjangoは不要というか向いてない
>>561 import readline, sys
ImportError: No module named readline
というエラーが出てしまいました。
python readlineで検索ぐらいしないのか?
そんな糞めんどくせー事するわけねーだろっ!!!
学校の課題を持ってくるのやめようよ わからないところは先生に聞きなさい もし趣味でpythonやってるなら段差に躓いて転んで帰ってくるな
修行するぞ修行するぞ PyPiからモジュールをインストールする方法を調べよう そしてcoloramaを入れよう
# Python3.3 s = '\x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85\x81' print(str(s)) sに格納されているUnicode?を変換すると「指定されたモジュールが見つかりません」って表示されるそうなんですが、 この変換方法がわかりません Python3からは文字列型はUnicode文字列なのでstrで変換できると思ったのですができません どなたかご教示お願いします
>>> str(b'\x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85', 'cp932') '指定されたモジュ' >>> b'\x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85'.decode('cp932') '指定されたモジュ' >>> '\x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\x82\x83W\x83\x85'.encode("raw_unicode_escape").decode("cp932") '指定されたモジュ'
これ教えて何がどう解決するのか知りたいわ
573 :
デフォルトの名無しさん :2013/06/15(土) 10:09:57.79
1もしくは"1"を、b"\x01"にするはどうしたらいいですか? struct.pack(">h", 1)だとb"\x00\x01"で2Byteになってしまいます。
chr(1)
struct.pack("c", 1)
b'%c' % 1
577 :
573 :2013/06/15(土) 10:37:47.79
すいません。大事なこと忘れてました。python3.3です。ごめんなさい。
578 :
573 :2013/06/15(土) 11:06:17.62
>>574 をbytes(chr(1), encoding="utf-8")したらいけそうなので、これでいこうと思います。
教えてくれた人ありがとうございました。
Python使いに性格悪いやつが多いのは やっぱ言語使用のせいなの?
馴染めない奴を追い出すことで 凄まじく居心地のいい開発環境を実現している
皮肉や嫌味たっぷりコメディから名前が取られてるくらいですから
馬鹿除けの効き目は抜群
黙ってても抜けていかないくらい簡単な言語でしょ 抜けていかないからハラスメントして追い出すわけでしょ ブラック企業やイジメ横行の企業どこが違うのか
労働と違って義務ではないので
つまり日本人向きではないということ。
仲良しサークル希望なら高校か大学にもういっぺん行ってろ
現実が希望と違って癇癪起こすガキじゃあるまいし、 昨日の21時からよく18時間も怒り心頭を発してられるよ。
MLが活発だったなら、ML内のトピックで癇癪を炸裂させるところだったな 未然に防がれてよかった
誰が怒り心頭なの? 勝手に思い込みが激しいアスペチックな人が多すぎるよここw そして一人じゃないみたいだし 集まってるねここw はずかしい
無理して使うことはないよ
ところで、携帯小説書いてみたから読んでくれ ハマのサテンでナオンと待ち合わせたオイラは、10分程遅れて到着した。 窓ガラスから店の中を覗くと、ナオンは既に椅子に坐って待っていた。 「ヒュー」 思わず口笛を吹いた。相変わらずマブイ。 カランコロンカラン、コロンカランコロン。 「レスカ、ガム抜きでな」 マスターにそう声を掛けて、オイラは席についた。 「オマエ、何頼んだの?」 「レイコー」 ぶっきらぼうに答える。 「アイスコーヒーとガムシロ抜きのレモンスカッシュです」 ウェイトレスが苦い空気に割って入った。 「ほら、生きてるぜ」 クシャクシャになったストローの袋に水を掛けながら言った。巷で流行ってる遊びだ。 「タカシが死んだよ」 ヨーコが言った。 「峠で事故ってさ、即死だって」 「・・・」 「アイツの走りって、まるで死に急ぐような 命を削ってる走りだった。だからアタシは ずっと止めさせようと思ってたのに、 そうする前にいってしまった」 ヨーコがタバコに火をつけた。 ホープ。ナオンの癖にキツイタバコだ。 ホープ。希望。嫌な言葉だ。希望なんてのはどん底の奴が持つものだ。 希望の無い奴だけが希望を持てる。ヨーコの吐き出す紫煙を吸って、オイラも タバコに火をつけた。 わかば。安くて旨いタバコだ。俺達はまだ若い。それは希望なのか?オイラにはわからない。
>>583 簡単ならあなたがスパッと教えて差し上げればいいんじゃないですか?
そんな話してないんだよ 日本語できないアスペには分からないだろうけど
本スレでどうぞ
>>593 1レスでスパッと回答して差し上げればあなたの憎むいじめ問題は起こらないのでは?
596 :
593 :2013/06/15(土) 18:51:09.75
似てたかな ちょっと真似してみたんだけど
あー似てた似てた。 死ね。
リストにデータが連なっていて、 [a,a,b,a,a] bが出てくるまではAの処理、b以後はBの処理を行いたいんですけど、 一回で処理できるでしょうか? forループでindex番号をとって処理する方法は思いついたのですが、 もっとスマートな方法があれば教えてください。
処理を関数に入れる A = func B = func2 for n in [a,a,b,a,a] if n == b: A = B A(n)
分かりやすくするために変数Bを書いたんであって、実際は要らない
602 :
デフォルトの名無しさん :2013/06/15(土) 20:35:37.51
>>600 ,601
ありがとうございます、助かりました。
pythonのバイトコードをpythonのコード以外から作ってpythonで実行したいのですが調べてもいい情報が出て来ません 例えるならclojureのpython版みたいな感じですがわかる人いますか
CPythonでは直接バイトコードを実行させることは不可能だから、出てこなくても不思議ではない やりたければモジュールを作ってimportする必要がある Jythonなどはその限りではない
つまりpycファイルをpythonから作ることは不可能ってことですか? C/C++で作ったものをpythonから使うしかないんですね ありがとうございました
*.pyを*.pycにすることはできる それ以外は不可
docs.python.jp/2/library/language.html このページを見つけたんですが これのバイトコード命令を生成することも無理ですか
CPythonが、pyから、pycを作るときは、その表にしたがって生成してるんだけど! pyファイル以外から作る方法は持ってないの! 例えばあなたがx86の機械語を読んで、 CPythonのバイトコードに変換するようなプログラムを書くなら、 それは全然問題ない。 具体的に何を使って何をしたいのか言えよ。
pythonで何かの言語のコード(例えばbasic)をpythonのバイトコードに変換してpythonのコードとして実行するようにしたいんです
何度も言ってるように、CPythonはpyファイルのことしか理解しません。 したがって、そのような機構は存在しません。 あなたがそのようなプログラムを作成することは問題ありません。 ぜひそうしましょう。
613 :
デフォルトの名無しさん :2013/06/16(日) 23:39:25.69
classのあたりから急に難しくなった
pythonでJavaScriptのonclickを動かす方法ってありますか? できれば外部モジュールは使わないほうがいいです
ブラウザはどうすんの javascriptってjavascriptだけで成り立ってるわけじゃないからね その質問だとpure pythonのブラウザをくれって質問とほぼ等価で そんなもんない
既存のブラウザで開いたページを対象にするにしても OSは何なのかとか、ブラウザは何なのかによって 外部モジュールが要るかどうか、そもそも可能かどうかも変わる 俺が同じ事をやれと言われたら pythonでproxyを作ってサイトにjavascriptを注入する
Pythonを勉強し始めて2日目なのですが、 さっそくつまずきそうなので教えてください >>> i = 1 >>> i += 2 >>>i 3 これです。二行目がさっぱりです どういう意味ですか?
i に 2 を足して i に代入し直す操作を i += 2 と書きます これを i =+ 2 と書かないのは i = +2 と区別が付かないから?じゃないかと思います あと i = i + 2 と書くのはお勧めしません
なんとなくわかった i = i + 2 だったら理解出来るんだけどなぁ 頭が硬いんだろうか ありがとう
620 :
デフォルトの名無しさん :2013/06/18(火) 22:50:03.86
i = i + 2 は等号が成立しないから違和感ありまくり
代入と等号の区別を脳内に導入すればいいですよ
まー、徐々に言語仕様を理解していくしかないんじゃない?
624 :
デフォルトの名無しさん :2013/06/19(水) 00:33:10.39
>>619 i = i+2
みたいな書き方よりも、
i += 2
みたいな書き方のほうが若干処理が早くなるらしいから、慣れといて損はないよ
同じふうに、
-=
*=
/=
もある
CPythonのバイトコードでは違わないから同じ
>>617 自分の記憶が正しければ、C言語がその代入演算子を使い始めた。
それが正しいかどうかはともかく、とりあえずPython固有な話じゃない。
乱暴に言うと、プログラミング言語の世界では珍しくない構文。
>>620 わかる
宣言的じゃないんだよな
1つの式の中で順番を意識する必要があるから、
理解してても一瞬、んん?となる
asciiコードに←があればそっちが採用されていたに違いない
629 :
デフォルトの名無しさん :2013/06/19(水) 07:50:15.76
馬鹿には無理
631 :
デフォルトの名無しさん :2013/06/19(水) 10:17:17.34
Pythonにはインクリメントがないのはなぜなんだぜ?
インクリマンコがないのはruby pythonにはある
文だしキーワードにしちゃえばよかったのにね
JavaScriptのsetTimeoutみたいに何秒後に実行させる関数って無いんですか? Timerもsleepも読込みで止まってしまいます(使い方間違ってたらごめんなさい)
エスパーでもない限り間違ってるかどうか分かんねー
超初心者用であって池沼用ではないのだが
640 :
デフォルトの名無しさん :2013/06/22(土) 12:04:33.60
python 初日ですが、is (object として同じ)の動き方がわからないです。 a=2 b=2 if (a is b): print("same") これは、同じ整数値を指すポインタみたいなものなんだろうと理解したけど、 a=2 b=8 a*=4 if (a is b): print("same") これでも、sameになるのは、なぜ? pythonインタプリタが、一々結果を確かめてるのなら、次も same になりそうなのに。 s='bc' t='abc' s=t[0] + s if (s is t): print("same") else: print("diff as object")
>>640 id はオブジェクトへのポインタなり参照による比較であってる
小さい整数についてはキャッシュ済みでそれを使いまわしてる
>>> a = 1000
>>> b = 1000
>>> a is b
False
>>> a = 10
>>> b = 10
>>> a is b
True
643 :
640 :2013/06/22(土) 12:30:45.44
>小さい整数についてはキャッシュ済みでそれを使いまわしてる ひえ〜 これは、言語仕様として? それとも、たまたまそういう実装なだけでしょうか?
キャッシュしたら速いでしょ?真偽やNoneとかさ そもそもオブジェクトを比較すると分かってるのに 整数に使おうとするのはなぜ?
645 :
640 :2013/06/22(土) 12:45:14.73
>整数に使おうとするのはなぜ? いや、今日からpythonを始めたので、「オブジェクト」の中身が よく分からなくて、== と is を、いろいろ試していました。 どうも、有り難うございました。
結果が不定なのは仕様だよ
オブジェクトでないならエラーにすればいいのに…
Pythonでは全てオブジェクトだよ
Javaのプリミティブ型とは違うぞ
651 :
648 :2013/06/22(土) 14:11:54.85
>>649-650 確かに言われればそうだな。
でも、結果が不定になるのはちょっとなぁ。
Numbers は、警告するとかじゃダメかな。
警告ってなんだよw
動的言語で何を言ってるんだ…
不定でまずい状況ってどんな時だろう
>>652-653 警告と言うか、オプションで例外にするかどうか決められるような感じ。
>>654 まあ、バグのケースしか考えられないけど、初心者がわけわからず悩むより、
例外でも発生してくれた方がうれしくない?
その初心者はなんでググらないのか謎だし その段階で最初からオプションを指定したり色々すごいな
別にうれしくない
下手にほかの言語のこと知ってるからこういう発想になるんじゃないの
そんなオプションがあると知る機会があるなら、知った時点で用もなく数値にisは使わなくなるだろう。 デフォルトにしてしまえば、これまでに作られた不定であることを利用しているプログラムは動かなくなるだろう。 というところまでは想像して欲しいな。 思いつきでペラペラ喋るのではなく。
不定であることを利用したプログラムが動かなくなるのは問題ないんじゃないだろうか
言語仕様に則ったプログラムが動かなくなっても問題ないって言ってるのに等しいぞ。 ちょっとその神経は理解しがたい。
不定というのは、
>>642 のようなキャッシュの使い回しのことで
それを利用するコードなんて書かないと思うよ
そもそも挙動が不定なのだから。
>>656 >その初心者はなんでググらないのか謎だし
いや、気づかないとググところにいかないでしょ。
>その段階で最初からオプションを指定したり色々すごいな
え゛、テストとかしない人なの?
>>657-658 まあ、そうかな。
>>659 > 数値にisは使わなくなるだろう。
そんなことが確実にできるなら、コーディング時のバグは半減するわけで…
> 不定であることを利用しているプログラムは動かなくなるだろう。
だからこそのオプション指定なわけなんだけどね。
>>663 書かないと思うのは貴方の勝手だけと、書かれてないと保証するのは貴方じゃないよ
>>665 isのこと知らない奴がisに関するオプション付けるの?
そのオプションを知ってるってことはisの挙動を知ってるってことじゃないの?
意味がよく分からない
>>666 実際そんなコードあんの?
それが動かなくても自業自得としか言えない
>>665 >そんなことが確実にできるなら、コーディング時のバグは半減するわけで…
どのみちテストするんだから気にするなよ
え、テストしない人なの?
>>668 自業自得と談じるのは貴方の勝手だけど、言語仕様という契約を破ってクレームつけられる役目は貴方じゃないよ
他ならぬ開発者たち
その値をキャッシュして使いまわすかどうかは環境によるからテストの問題じゃない
例外にしろとかいうアホの発想に付き合う気はないけど、前バージョン維持してくれるなら、仕様変えるのは構わないよ 今の2と3だけで開発リソースいっぱいいっぱいだから、現実には有り得ないけど
だから
>>646 が指摘してるように実装の問題であって言語仕様の問題じゃない。
言語で仕様が定義されてないというのが問題という意見もあるかもしれないが。
俺は例外にしろとか言ってないが 例外にできない理由として、不定な挙動を利用してる コードがあるとかいう主張を擁護できないだけ
>>667 例えば、文法よく知ってるプログラマでも静的解析とか掛けるでしょ?
挙動を知ってるから常にちゃんと書けるなら誰も苦労しないよ…
>>669 だから、テストのときに気づきやすくなるでしょ。
テストしない人には理解できないかもしれないけど (w
immutable 同士の is はぜんぶ True を返せっていう主張ならありかもしれないとか思った
>>675 isと==を混同してる人でしょ?もう少し勉強しろとしか言えない
根本的な間違いを人のせいにすんな
>>677 だから、知識があっても勘違いでバぐることもあるだろって話。
理解できないかなぁ…
一般論としては分かるが、==とisの話でしょ? 挙動を理解してても勘違いでバグらせる例が思いつかない
そりゃあ起こりうる間違いなんて無限に想定できるが isはなあ…別にって感じ
初心者がisなんぞ覚える必要はない
In [1]: "a" * 100 is "a" * 100 Out[1]: False In [2]: "a" * 10 is "a" * 10 Out[2]: True こうなるのは知ってるんだけど正確な理由を忘れた
683 :
682 :2013/06/22(土) 18:29:53.25
ごめん上のレス見てなかった忘れてくれ
>>679-680 うん、まあ頻度は高くないと思うし、is ,がオブジェクトの比較と言う意味からは
今の仕様の方が正しいんだろうけど、
>>642 みたいな挙動をみると何とかな
らないものかと、ちょっと思っただけ。
普段は言語そのものへの文句はフォーラムで言えとか突っぱねるくせに 珍しく相手してんね 暇なのかww?
一部のオブジェクトのみFlyweightパターンを適用する行為は以後禁止となります 悪しからずご了承ください
>>682 試してみたらメモリ使いすぎてスワップしたんだけど自分だけ?
$ python
>> "b"*10000000000 == "b"*10000000000
>>687 $ python
>>> "a" * 10 ** 10 == "a" * 10 ** 10
これ実行エラーが出て実行出来ないパターンと
実行出来ちゃって暴走するパターンがある
理由はわからんです
a='a' * 10 ** 10 で10GBメモリ使ってワロタ
俺には
>>646 で話は全部終わりに思えるんやが
いったい何の話をしてるんや・・
692 :
デフォルトの名無しさん :2013/06/24(月) 01:36:04.17
L=[1, 2, 3, 4]において L{1:3}でスライシングすると [2, 3]となるけど、 それならL{1:2}でそうなるようにしときゃいいじゃないかといつも思う・・・
[L[i] for i in range(1,3)] だから普通
>>692 どこからどこまでを指定してるんであってどこからいくつではない
実際の中身がそうなってるわけじゃないだろうけど このような一貫性のためにそうなってるということは間違いない
2系では urllib.urlencode('あいうえお') なのに、 3系では urllib.perse.quote('あいうえお') にしないとエラーが出ます。 今回少し検索したので3系での方法がわかったのですが、こういうのは何で勉強してれば身につくのでしょうか?
リリースノート
必要になったときに少し検索して身につけるんだよ
変更点を網羅するのは無理だろうなあ そもそも2のライブラリだって全部覚えてるわけじゃないし
レンタルサーバーでつかえるvirtual pythonというのがあるようで これをインストールして環境を整えることはうまくいきました。 ただ、これってパフォーマンスはすごく落ちるのでしょうか? 元のpythonとかわりませんか? すれ違いだったら誘導をお願いします
1行目から理解としては微妙な気がするな パフォーマンスは変わらん
ありがとうございます なんだかよくわかってはいません 普通にレンタル鯖だと自分が使いたいライブラリとかがうまく入らないので virtual pythonを入れればいいみたいに思っているのですが違うのですかね? パフォーマンスは変わらないなら利用してみます
あ、あとすみません 共用のレンタルサーバでパイソンを使おうとしているものです pythonのスクリプトからweb上でpostgreなどのデータベースにアクセスする時ですが、 コネクション作成の時にデータベースのidとパスを入れますね これはスクリプトに平文で書くのはセキュリティ上よろしくないと思うのですが、何かうまい方法はありますか?
postgreなどのデータベースのトラヒックが暗号化されていない限り その辺気にしても意味がない
>>705 最終的にはスクリプトファイルのセキュリティに気を配るしかない。
トラフィックとか言ってる奴は、当面無視でいい。
>>707 ありがとうございます
セキュリティとして自分が考えられるのは、.py ファイルのパーミッションを適当に705などに設定する
パスワードの書いてあるファイルは別途用意して、DocumentRootより上に置いておいてそちらへの参照とする
くらいなのですが、他に有効な手段はありますか?
暗号化とかしたらデータベースが読み出せないから無駄なんでしょうか
攻撃者として誰を想定してんの
705だったら誰でも見れるぞ
>>709 同鯖の利用者、外部からの攻撃です
さすがに鯖管は大丈夫だと思うので…
705まずいですか?
実行プロセスグループの所有にする
713 :
デフォルトの名無しさん :2013/06/28(金) 14:58:32.56
超初心者的な質問ですみません。 pythonのモジュールってどうやって入手したらいいんでしょうか? ↓こんなエラーが出てくるのですが、subprocessって標準モジュールじゃないんですか? from subprocess import Popen, PIPE ImportError: No module named subprocess ググっても余計な情報しか出てこないし、困り果てています。 よろしくお願いします。
普通は標準モジュールですけど、あなたの環境は普通じゃないのかもしれない 対話コンソール起動すると環境とかコンパイル情報とか標準されるから貼れ あとsys.pathを貼れ
超初心者なら「普通」の環境ではじめなきゃね!
質問です pip や distribute などのモジュールをソースからインストールする際、setup.py を実行すると思いますが これは/bin/python のあるディレクトリにコピーして実行するべきですか? それともどこで実行しても大丈夫ですか
どこで実行しても大丈夫だけど 環境に複数のPythonが入ってる場合、「どれで」実行するかが大事になってくる 1つしか入ってないなら気にしなくていい
どこで実行しても良い。問題なのは実行される側じゃなくて実行する側だから
>>717 ありがとうございます
python setup.py でなく/aaa/bbb/bin/python setup.py みたいに
フルパスで指定すれば大丈夫ですか?
なにいってんだこいつ
すみません なんか見当違いのことを言ってしまったかもしれません
722 :
デフォルトの名無しさん :2013/06/29(土) 15:07:54.69
マジレスしとくと python26で実行してpython27のモジュールがimportされた状態で setup.pyが正常に終わるとは思えないしもし成功しても使いたくない
ただの感想をマジレスと言い張る傲慢
distributeはディストリのパッケージにあればそれを使うほうが良い
TkinterのCanvasにgifイメージを貼ったんですが、deleteで削除できません。 deleteじゃ駄目なんでしょうか?Pythonのバージョンは2.7です。 宜しくお願いいたします。
726 :
725 :2013/06/30(日) 17:27:55.64
すみません。自己解決しました。
よくやった
728 :
デフォルトの名無しさん :2013/06/30(日) 17:47:51.19
っす
730 :
デフォルトの名無しさん :2013/07/03(水) 03:23:02.68
すみません、モジョーレが、オブジェクトに、起動できません? すみません、inport sysとやったのですが、オブジェクトが、本の通りに、メソッドできません 当方、初心者ですm(._.)m
無理に喋らなくていいからエラーの内容をコピーしてここに貼ってくれ
素直に母国語のコミュニティで聞けばいいと思うんだ。 そこでシカトされてここに来たのかもしれんけど。
自分もそう思うけどだったら import のつづりを間違えないような気もする
>>730 inport sys ではなく import sys
[a: 1 (b: (2.0, 3.0))] 某APIの返り値が上記の形なのですがこれから1を取り出す方法を教えてください
そんな形は無いという回答をご所望か
reprの結果でもJSONでもなさそうだけど何これ
自作APIだろ察してやれよ
お前ら型拡張もやったことないのか?
ふ〜ん それで、やったことある人の回答は?
#coding: utf-8 とちゃんと書いてるのに、日本語を打ち込むと「?????」ってなるんですが、なんで??
エディタで保存するときにUTF-8になってないんじゃない?
エディタを教えろ
エディタはviですがな
viという名のvimですね わかります。
xyzzy
シナトラと同じぐらいflaskを解説して下さい。
747 :
デフォルトの名無しさん :2013/07/05(金) 22:56:16.21
Python3.3のthreding.Threadで質問です。
http://pastebin.com/9qfvZDpV のようなプログラムでtl[0]は処理完了、tl[1]は処理中のような状態で
tl[0].is_alive()、tl[1].is_alive()でTrue, Trueを得るのはどう書けばいいですか?
あと、pythonは上から処理していくと書いてあったんですがstartしてからjoinしてますが、joinする前に処理が完了してしまったりしないんですか?
>tl[0]は処理完了、tl[1]は処理中 の状態なら tl[0].is_alive() は天地をひっくり返してもTrueにはなりえないだろ どうしろと
>joinする前に処理が完了してしまったりしないんですか? 短い処理なら普通に完了しますよ。何かご不満でも?
完了したスレッドにjoinしてもブロックされないだけだから気にしなくていい
エスパーすると途中経過が表示したいんじゃないか。
752 :
747 :2013/07/05(金) 23:53:50.43
join()の動作を勘違いしてました。joinを実行したスレッドを呼び出したスレッドをブロックするんですね。
>>749 >短い処理なら普通に完了しますよ。何かご不満でも?
ありがとうございます。当方には不満、苦情等は一切ありません。
お気に触られたので謝罪いたします。申し訳ありませんでした。
>>750 試したらほんとにブロックされないだけでした。
例外エラー出るのかなって思ってたらそれすらもなかったです。
>>751 そうです。でも、joinの勘違いからきてたので忘れてくれてかまわないです。
ありがとうございました。
Python使ってる連中には変なのが多いから気にしなくていい
コンパイルして、カーソルが固まったままなら、無限ループしてると考えてOK?
コンパイル?
python3です。 b"\x31"とb"1"は同じ値ですか?呼び方はバイト文字列であってますか?
>>759 WindowsXPのPython3では同じですな。
他のOSではどうか知らない。
呼び方は、バイトオブジェクトまたはバイトリテラルかなあ
マニュアルを読む限りではね。
文字を表すとは限らないと思うよ。
バイト列でもいいと思う
バイトオブジェクトって癖があるよなあ。 バイトから整数や16進文字列へ変換する 直接的なメソッドや関数がない割に、 forや添字でバイトオブジェクトから一個ずつ データを取り出す時は、整数に変換されて出てくる。
binasciiとかなかったか
764 :
デフォルトの名無しさん :2013/07/09(火) 07:41:37.91
バイト君とかアルバイトとかでいいじゃん
あるひ ソースの中 バイト君に 出会った
昔N88BASICでゲーム書いてたんですが パイソン勉強したら幸せになれますか?
何事も知らないより知ってるほうが幸せになれると思うよ。
Python 2.7.3を使ってるんだけど、raise使った時の挙動がおかしいです。
頭が?
例外なんて使うな。 あれは処理の流れを見えなくするからバグの元。 gotoの方が行き先を明示しているだけマシ。 Pythonにgotoがないのが惜しまれる。
いやエラーを投げる方もキャッチするほうも明示するでしょ?馬鹿?
>>771 お前はraiseを見ただけで
ソースのどこに飛んでいくかわかるのか?
それは凄いな。
773 :
デフォルトの名無しさん :2013/07/11(木) 09:27:50.40
関数の中でraiseが使われていれば 必ずそれはその関数を呼んだ方に飛んでいく 呼ばれた方に飛んでいくことは決して無い
774 :
デフォルトの名無しさん :2013/07/11(木) 10:03:13.76
まあ例外って投げる方より拾った側でどうするか視点の機構だし 失敗してさてどうするか視点のgotoとは役割が違う やりたければwhile break使って死ぬまでエラーコード返してれば? とめないよ
七七七
特定の関数Aだけから下請け的に呼ばれる関数Bがある時、 Bを関数Aの中に定義すると見通しが良くなると思うんですが、 このスタイルは一般的ですかね?それとも何かまずい点がありますかね というのは、趣味でツールを書いていて、規模が大きくなってくると トップレベルに関数がずらずらと並んでどれがどこから呼ばれているか わからなくなってくるので…
一般的ですよ コンパレータとかコールバックとかlambdaじゃ書きにくいし、外のスコープにおいても仕方ないからね
>>779 ありがとっす
これで安心して関数をまとめられます
>>767 そうかなぁ、2ちゃんなんて知らない奴の方が幸せそうだぞ...
782 :
デフォルトの名無しさん :2013/07/11(木) 23:41:37.00
この場合分からないでしょうね 書いてませんから
>>782 リファレンス(の原文)の書き方に問題があるというのがまずあるとは思うけど、
URLError は urllib.error.URLError のことで、
urllib.error.HTTPError は URLError のサブクラス のサブクラスとなっている、ってとこかな。
ということで混乱の原因はプアなドキュメントにあるんじゃないかな。
「のサブクラス」って繰り返してるけどそのへんは生温かい目でヨロシコ。
786 :
デフォルトの名無しさん :2013/07/12(金) 08:37:08.30
>URLError を送出します 間違ってないしプアでもない ぽりもふぃずむを理解していればこれで正しいことが判る
「ぽりもふぃずむ」ってひらがなになってるけどそのへんは生温かい目でヨロシコ。
>実際にあげられるのはurllib.error.HTTPErrorでした。 そのときあがったのがタマタマHTTPErrorだっただけで HTTPError以外のURLErrorが送出される場合もあるって意味ね だから exception を受けるときに HTTPError で catch したらだめ あくまで URLError で catch する必要がある
じゃあHTTPErrorだけ特別扱いしたい時はURLErrorでcatchしてからHTTPErrorであるかどうか確かめてやれって事かな なんか二度手間だけど
アスペは字義どおりにしか解釈できないってこと
HTTPErrorだけ特別扱いしたい時は URLErrorでcatchして HTTPErrorでもcatch汁
792 :
782 :2013/07/13(土) 01:08:20.68
色々教えてくれてありがとう。やっぱ、リファレンス読むのって自分には難しいです。 後、実装方法書いてくれた人もありがとう。 自分の場合は、HTTPErrorをcatchした場合、それ以外のExceptionをcatchした場合みたいな感じで実装しました。
>> type(li) <type 'list'> >> print(li) [Something: 1_1, Something: 1_2, Something: 1_3] 上記の先頭に Name: u'名前' を追加したいんですがどうすればいいでしょうか そもそもSomethingとか1_1って文字列なんでしょうか
>私は二つ目のアプローチを好みます。 なんでだろ
797 :
デフォルトの名無しさん :2013/07/13(土) 09:26:02.99
3番目は嘘つき 2番目は誤訳 1番目は原本なので嘘とかそういう問題じゃない
少なくとも urlopen は URLError 以外も吐くから 2 は嘘つきと言っても良いくらいの罪 3 は論外
補足 >少なくとも urlopen は URLError 以外も吐くから HTTPError のことではないよ
>>796 一応1には次の行に
"HTTPError is the subclass of URLError raised in the specific case of HTTP URLs."
ってあった。python3の方にも同じこと書いてあった。
urllib.requestみるにhttpでエラーでたときだけHTTPErrorあげてるっぽいですね。
レスポンスコード帰ってくるような場合かな。
例外を拾うことってcatchするでいいんですか?exceptするはおかしいんですか?
try, exceptってあるからずっとexceptって言ってます。
何を catch するかを予め except するんだ
>>800 普通は例外を捕捉(catch)するとかいう
except じゃたぶん通じないだろう
803 :
デフォルトの名無しさん :2013/07/13(土) 16:04:22.74
みんなのパイチンくんとデカチンくん
input関数に対し、キーボードからYかyを 入力したことを判定したいです。 しかし以下を試すと、Enter空打ちでもTrueになります。 これはなぜでしょうか。 >>> yn = input() (ここでEnter空打ち) >>> yn in 'Yy' True
その変数ynがどんな値を持ってるか見ればわかる話じゃないの
そもそも逆じゃないか? yn in 'Yy' では無く 'Yy' in yn
え?
>>> '' in 'Yy' これで答えは出ると思いますが
いや、ちょっとまて それもおかしいぞ
811 :
806 :2013/07/13(土) 21:17:20.88
ああ、すまん Yかyだけに引っ掛けたかったのかな Yが入ってりゃYでもyesでもいいのかと思ったわ
>>809 これは勉強不足でした。
タイプ量を削減して楽しようと思ったのですが、仕方有りませんね。
普通に if yn == 'Y' or yn == 'y' とすることにします。
yn.lower() == 'y' でもいいお
import androidhelper droid = androidhelper.Android() yn = droid.dialogGetInput() y = [x in yn for x in ['y','Y']] droid.makeToast(str(True in y))
二つならどうでもいいけど
>>> yn in list('Yy')
False
>>814 はキチガイだからスルー
816 :
デフォルトの名無しさん :2013/07/14(日) 20:38:10.70
PTVSってVisual Studioの無料版では使えないの?
うん
ドリームスパークで有料版使えるから
VS Shellとなら使える
去年のpyconでそんな話してたよ
mandam
822 :
デフォルトの名無しさん :2013/07/15(月) 19:02:26.77
>>819 ありがd
VS Shellってintegratedの方だけで大丈夫だよな?
823 :
デフォルトの名無しさん :2013/07/15(月) 23:48:23.44
質問です。 >>> { sum([sum(LofL)]) for LofL in [[.25, .75, .1], [-1, 0], [4, 4, 4, 4]]} {16, 1.1, -1} この16, 1.1., -1も合計したいんですが、どうすればいいのか教えて下さい。 sum()を入れ子にすれば合計されると思ったのですが合計されません。
824 :
823 :2013/07/15(月) 23:55:59.53
すみません、自己解決しました・・・入れ子は正解でしたね・・・
socketモジュールのbindについて質問です。 例えばですが、 host="localhost" port=80 と設定していたとして、 bind((host, port))と、2重に括弧を付けるのは何故なのでしょうか? 実行時には必要な物だと思って書いているので問題は無いのですが、 気になるのですが
bind(host, port) だと bind() に host と port の二つの引数を渡すことになる bind((host, port)) だと二要素のタプルをひとつ bind() に渡してる
>>> host="localhost" >>> port=80 >>> t = (host, port) >>> t ('localhost', 80) >>> type(t) <class 'tuple'> >>>
tuple
ただ良く分からんのが、そもそもなぜでタプルを要求すんのかということ 別にタプルでもいいけどさ、なんか積極的な理由があってそうしてるのか?
関数の戻り値をそのまま引数にできるように あてずっぽうですのでほんきにしないように
832 :
825 :2013/07/17(水) 20:15:37.25
ああ、そういうことなんですか。 アドレスをタプルにして1つとして渡してるんですか。 ありがとうございます。
分けるのはいつでもできるからだな
>>830 bind() に渡すアドレスはアドレスファミリにより中身が異なる
例えば TCP/IP ならアドレスはホストとポートから成るけど
UNIX ドメインソケットならアドレスはファイル名だけ
だったらタプルでくるんだほうがいいだろう
なんかこのスレ読んでると まだ実用レベルに達して無い問題のある言語っぽく思えて来るんだが・・・
どのへんが? だれからも苦情が出ないほど既に実用領域に達しているWinows8と比べての話?
>>835 文句は使ってから言え
物事を表面からしか見ない自分を恥じろ
ユーザーは一般的なコミュニケーションを取れるレベルではないです 当たってます
>>835 実用レベルってどれくらいのレベル?
金融システムのメインに使うとかスパコンで遺伝子解析に使うとか?
COBOL「呼んだか?」
おまいらつられすぎ。
はい、釣り宣言いただきました
844 :
デフォルトの名無しさん :2013/07/20(土) 20:06:10.55
すみません、質問です。 乱数で選択肢を選ぶ以下のようなコードで、 出力が['D', 'E', 'F']のように一文字ずつになってしまいます。 >>> options = ["ABC","DEF","GHI"] >>> [x for x in options[randint(0,2)]] ['D', 'E', 'F'] どうやったら["DEF"]という出力にできますか? ちなみに def choices(): return [x for x in options[randint(0,2)]] の形で使おうと思っています。マジレスお願いします。
list(options[randint(0,2)]) 気づけば単純
846 :
844 :2013/07/20(土) 20:10:05.20
すみません、投稿して10秒で解決しました。x要らないですね・・・。
[options[randint(0,2)],] いやこうだな
848 :
844 :2013/07/20(土) 20:11:49.20
>>845 それに気付きませんでした・・・ありがとうございました。
849 :
デフォルトの名無しさん :2013/07/20(土) 22:50:22.65
質問です。 reloadというのはどうやってやるのでしょうか? /matrixというフォルダの直下に ### dictutil.py### def dict2list(dct, keylist): return [ dct[keylist[i]] for i in range(len(dct)) ] def list2dict(L, keylist): return { keylist[i]:L[i] for i in range(len(L)) } def listrange2dict(L): return { i:L[i] for i in range(len(L)) } ・・・というファイルを置いています。 そして、以下のように打ったのですが、どうも見つけられていないようです: >>> from dictutil import * >>> reload(dictutil) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'dictutil' is not defined >>> listrange2dict(L) >>> dictutil.listrange2dict(L) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'dictutil' is not defined どうか教えて下さい。お願いします。
from dictutil ... しても dictutil って名前は定義されない import dictutil して reload(dictutil) なら OK
851 :
849 :2013/07/21(日) 00:59:24.70
>>850 出来ました!
>>> import dictutil
>>> reload(dictutil)
<module 'dictutil' from 'dictutil.py'>
>>> dictutil.listrange2dict(L)
{0: 'A', 1: 'B', 2: 'C'}
この場合はimport dictutilなんですね。覚えておきます。
ありがとうございました!
ひとつ上のディレクトリにあるファイルを (カレントディレクトリに依存せずに) インポートしたいのですが、これもっと簡単にかけませんかね? dirpath = os.path.dirname(os.path.abspath(__file__)) parpath = os.path.join(dirpath, os.pardir) sys.path.append(parpath) import hoge
>>852 import sys,os
sys.path.append(os.path.dirname(os.path.abspath(__file__)) + os.pardir)
import hoge
os.path.abspath(os.path.join(os.path.dirname(__file__), os.pardir))
>>853-854 レスありがとうございます
__file__ のパスを基に os.path でやるしかないですかね?
from .. import
あ、モジュールになってれば、だけど
>>856-857 モジュールになってないんですよねー……
具体的にいうと、エディタで使う小さなスクリプトのテストを一カ所にまとめたいんです
scripts/*.py
scripts/tests/*_test.py
というような感じで
絶対パスでsys.path.appendするとか
>>853-854 を書いたpyファイルをフォルダにコピペしてインポートするとか
であれば諦めて正攻法でやってね
何のエディタだか知らないけど、site.pyとか付属してないのか? 付いてるならその中に書けよ
おまいらなぜglob使わないの? import glob files = glob.glob("../*.py")
それで?その先はどうするの 質問者が何をやろうとしてるか理解してる?
>>858 execfile('../*.py')
外に出してインポートするっていうのはいいですね。そうすることにします
長々とご迷惑をおかけしました
>>861 Emacs の shell-command-on-region で呼び出すスクリプト (など) です
選択範囲の文字列をスクリプトに渡して、出力された文字列で置き換えます
>>862 すみません、ワイルドカード使ったのが紛らわしかった
hoge.py と tests/hoge_test.py、 fuga.py と tests/fuga_test.py などが一対一で対応していて
tests/hoge_test.py から hoge.py にアクセスしたいという話です
867 :
デフォルトの名無しさん :2013/07/27(土) 16:38:57.03
module------------class.py |--------method.py |--------__init__.py |--------test_dir----------test_myclass.py みたいな感じで、class.pyで使うメソッド群をmethod.pyにまとめるのってやり方としておかしかったり、普通はこうする的な方法ありますか? class.py内で定義するものですか?
一つ言えるのは 標準モジュールはそんな分割してない
Pythonで変数や関数に日本語が使えたら コードがそのまま仕様書になって これがホントのスクリプト(脚本)なんちゃってと思って 書いてみたら動いてびっくりした。 これって昔からできたことなの?マジ嬉しいのだが。 def 初物(数量): 初物価格 = 130 return 初物価格 * 数量 print(初物(100))
871 :
デフォルトの名無しさん :2013/07/28(日) 15:09:54.66
ascii文化圏の人にとっては昔からそうだったんだね
● in ▲ ●を▲のおのおのにして みたいなところまで行くと泣く……
ぴゆう太郎
>>870 ありがとっす。
これ日本のPythonユーザーで知らない人多いんじゃないのかな。
これだけでもPython3にする価値ありだよね。
パっと見た目でわかりやすいからコメントを減らせるし
他人にコードを引き継ぎやすい。
オブジェクト指向とも相性が良いと思う。
オブジェクト.メソッド
オブジェクト・属性
っていう書き方は、名前付けが適切ならばそのまんま日本語での
設計書になる。素晴らしい。
>>874 > パっと見た目でわかりやすいからコメントを減らせるし
> 他人にコードを引き継ぎやすい。
VBA や Visual C++ だと、大分前から使えるけど、俺もそう思っていた時もあったなぁ...
>他人にコードを引き継ぎやすい。 こんなコード引き継ぎ相談されたら断るに限る。
877 :
870 :2013/07/28(日) 20:11:13.20
ジャップ
日本で開発してるRubyですらこんなのは居ない
日本のWeb開発第一党言語であるPHPでも日本語識別子は使えるけど、 上のほうからド底辺まで見ても使用してる様子はない。 つまりそういうこった。
いちいち日本語と半角英数変換切り替えるの面倒くさそう。
ひまわり、だっけか。あんなの
昔Macで構文が完全に日本語表記のスクリプト言語あったけど、 見た途端ゾッとしたわ。 入力にかかるタイプ数が激増しそうで嫌やわ。
pydocの存在を知らない子なのか・・・?
食わず嫌いはなしにして真摯な目で
>>869 のコードと
def hatsumono(suuryou):
hatsumonokakaku = 130
return hatsumonokakaku * suuryou
print(hatsumono(100))
とを比べてみて欲しいのだけどね。
何年も前に他の誰かが作ったコードだとして、
初めて見る人にとってどちらがメンテしやすいか
一目瞭然でしょうと。
大切なことは、コーディングのしやすさよりも
メンテのしやすさなんだよ。
子供が弘法に説法してる感じだ
それで助かるの小学生くらいだと思うよ。
なんでローマ字
hatsumonoってなんかいやらしい(中学生)
そういう想像しないでくださる!
さすがにそこまでネタくさいとレスに困るからやり直して。
まずその関数がすごく気持ち悪い
だが現実はこーだ def m021f03(p001): v001 = 130 return v001 * p001 print(m021f03(100))
もう関数fの変数vでいいじゃん・・・
いつもながらこのスレはピントがぼけだしても流れを止めずに意味不明なレスでつづけちゃうのね。 とりあえず自分がわからないことはまず理解する、っていうアプローチから始めよーぜ。
仲裁役気取りは失せろ 邪魔だ
>>882 AppleScript1.xの頃のやつだっけ?
あまりの判り難さに使う人が殆どいなかったらしい。
なので完全日本語版は切られた。
>>898 何時間か格闘した事があるけど、
閉じ括弧の代わりにend xxxを書くから、日本語だと
以上--end if
以上--end tell
以上--end repeat
以上--end tell
みたいに、各行に元の表記のコメントを入れないと
何が何だか分からなるので、アホらしくて止めた。
それと、実験的な機能なので対応していないアプリが多くて役に立たなかった。
単純に n 回繰り返しをしたいだけの場合 for i in xrange(n): # do something と i = n while i: # do something i-=1 とどっちがいいとかあるんですか?
下は可読性が下がるから基本は上
ありがとうございます
可読性の前に指数 i のスコープがループ外にあるとパフォーマンスが落ちる
指数?
スコープはバイトコードになったら大して変わらん気がする
というかPythonのループは変数のスコープを作らないです
>>906 CからPythonに来た人がまず驚くのがそれだよね
自分も慣れるまでかなり時間がかかった
910 :
906 :2013/07/31(水) 20:47:44.16
>while のスコープ外に i 定義してるのは? whileブロックにもforブロックにもifブロックにもスコープなんてないってば 意味が分からないなら分かるようになってから発言おし
つーかなんでこんなスコープの仕様なの?手抜き?
>>911 whileやifの中にいちいちスコープが作られる方がおかしいと俺は思う
あれはバグの元だ
よく洗脳されていますね
制御文レベルでいちいちスコープ作るようになったのってCから?
>>913 いやそうじゃなくてね
Cを使っていた時は、ブロックが一つ深くなるたびに
「えーっとこの変数の有効範囲はここの閉じカッコまでだから…」と
気にする手間が増えていくのが苦痛でね
なにせカッコを一つ付けたり削るだけでもスコープが変わってしまうから
ちょっとしたループ構造の見直しでバグが入るリスクがある
ロジックを書くのに集中できない言語、それがCという言語だ
Pythonの「関数のみがローカルスコープを持つ」という仕様は
実にシンプルで実践しやすい。
変数を閉じ込めたい機能単位に関数を作ればいいのだから
>>916 そりゃお前だよ
そもそもPython動かしたことも無いだろ
>>915 > なにせカッコを一つ付けたり削るだけでもスコープが変わってしまうから
> ちょっとしたループ構造の見直しでバグが入るリスクがある
ネタだと思うが、頭になんか障害抱えてない?
919 :
57 :2013/07/31(水) 22:02:37.35
コード補完ってやっぱりPyDeb使ってるんですか?
いえ、当方Vim厨ですので
Python はスコープ外の値を書き換えられないからブロックスコープにするといろいろ面倒なことになるんじゃ
>>900 の例で while のスコープが有効だった場合 UnboundLocalError になる
でもforよりwhileループの方が速いんだよな イテレータがボトルネックになってるのかな
923 :
57 :2013/07/31(水) 23:14:31.19
vimか、確かにunixからwindowに移行してviとの別れが一番辛かったけど また、viに戻るのは辛そうだな...。 でも、参考にします。
>>917 こいつまじで python かけなそう
>>925 =916 ?
学校で先生からインターネット使ってはいけませんて言われれないの?
>>926 分からんなら書くなよwww
いい大人が恥ずかしくないの?
928 :
デフォルトの名無しさん :2013/08/01(木) 11:56:10.03
>>906 >>908 for hoge in fuga:
if check(hoge):
found = True
break
else:
found = False
929 :
デフォルトの名無しさん :2013/08/03(土) 02:46:42.29
論理演算なのだけど、以下の最後がFalseになるのはなぜでしょうか? >>> a = 3 >>> a == 3 True >>> a == 4 False >>> True | False True >>> a == 3 | a == 4 False 環境は Python 3.3.2 (default, Jul 27 2013, 11:23:47) [GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)] on darwin
ごめん評価順序勝手に想像したけど嘘だった。3項でも==使えたのね a==(3|a)==4 a==3==4 False
932 :
デフォルトの名無しさん :2013/08/03(土) 08:47:30.48
>>> True or False True >>> a == 3 or a == 4 True
|は論理演算じゃなくてbit演算な
934 :
929 :2013/08/03(土) 11:42:47.15
>> 930-931
ありがとう。理解できた。
(a == 3) or (a == 4)
がTrueを返すことも確認。
>>932-933 bit演算がいまいち分かってないのだけど(みんPyの説明だけでは使い方がイメージできない)、
bool値はint型(0 or 1)に置き換えられると考えてよいのかな。
>>> 1 & True
1
は確認できた。
>>> 2 & True 0 >>> (bool(2)) & True True >>> int(True) 1
>>> bin(True) '0b1' >>> bin(False) '0b0'
937 :
929 :2013/08/03(土) 23:48:35.36
>>937 ノートにもあるように、
x or y の意味は if x then true else y で
x and y の意味は if x then y else false になる
言い換えると、これらは純粋な論理演算子ではなく、
条件分岐を演算子で表現した構文糖(syntax sugar)になる
だから交換律(a or b = b or a)が成立しないのは当り前
他の言語、たとえばC言語にも同様な演算子 || や && があるし、
それほど珍しい構文でもない
なーる、横からだけどわかりやすくてうなった
bool型の演算とビット値の演算で処理が違うの?
941 :
929 :2013/08/04(日) 03:24:56.87
>>938 よく分かった。ありがとう。
Wikipediaの「短絡評価」の説明によると「演算子の第一引数を評価した段階で式全体の値が定まらない場合のみ第二引数を評価する」ということだね。
最後に評価した値を返す場合と、True/Falseを返す場合とで演算子が同じなのは
気持ち悪いと思ったけど、
最後の値(intならその値、boolならTrue/False)を返すという点では一貫しているのか。
>>> a = 8
>>> 3 and (a > 8)
False
>>> 3 or (a > 8)
3
>>> (a == 8) and 0
0
942 :
929 :2013/08/04(日) 03:28:05.29
むしろ、 >>> 1 == True True >>> True + True 2 >>> False * 100 0 みたいな、intとboolの区別が曖昧な扱いの方が気持ち悪くなってきた。
馬鹿には無理
>>942 だよな〜
>>944 はもちろん理解してるが、そろそろ暗黙の変換は警告してもいいと思う。
正直、論理演算・ビット演算はよくわからんので 意識して使わないようにしとります。 使うと、後生の人がいじった時にバグの元になるかも知れないから。 組込みなどの特殊な環境でアセンブラをバリバリ使うならともかく PCで、しかもスクリプト言語で論理演算・ビット演算を使う積極的な 理由はないよね?
>>946 ビット演算はまあ理解できるが、論理演算は普通に使うだろ
論理演算使わないでコーディングするほうが面倒くさいわ。
>>944 論理型が整数型のサブ型となっていることが問題ではないかと
C言語なら超高級アセンブリ言語だから許せるとしても、
その理屈をPythonに当てはめるには無理があるんじゃねえかって話
リンク先文書の型階層についても、タプル型がシーケンス型のサブ型だったり、
要素が1個しかない意味不明なタプルが書けたり、
真面目にデータ型を考えれば意図の不可解な仕様が見受けられると思う
昔三項が無かった時、代用品なAandBorCではまったのを思い出した
>949 pythonのタプルは不変の配列と思えば辻褄はあう
Pythonのタプルは集合論的意味は諦めてsetの方に譲ってる感じなのか でもsetはsetでおかしくね >>> set(set())==set() True 集合論的に{ } = ∅ として ∅ ∈ { ∅ } なんだから ∅ ≠ { ∅ } にしてよって思う
>>> ("hoge") 'hoge' >>> ("hoge")[0] 'h' タプルと言えばこれがハマりどころなんだけどなんでこんな動作するんだろ
要素がひとつのタプルは ("hoge",) と書く ("hoge")[0] は "hoge"[0] と解釈される
>>951 不変の配列ならば、要素数が0のリテラルが記述できないのは矛盾している
そもそもタプルとは直積(cartesian product)を表現するデータ型だよ
直積でないデータ型にタプルと命名することが間違っていて、
不変配列ならば不変配列クラス(immutable array)と命名すべきだったのでは?
それは分かってるけどなんでそういう罠をつけたのかなという疑問 後尾にカンマをつけるのは気持ち悪い気がするし
要素ひとつのタプルなんて滅多に使わないから問題ないよ(たぶん)
じゃあ tuple(["hoge"]) で
滅多に使わないというか、どういう場面で単要素のタプルが必要になるの?
>>956 Pythonの正確な歴史を知っている訳ではないから推測してみる
たぶんタプルという便利なデータ構造を知った作者が思いつきで
Pyhtonに採用したまでは良かったけれど、「作者に数学的素養が無かった」ため、
誤ってコレクション型のサブ型として実装してしまった... のではないかと
で、後から訂正しようにも既存コードの互換性問題があるので放置されていると
お前ら自分の無知を棚に上げて、作者を馬鹿にするのもいい加減にしろ。 タブルはPython発ではなく、それ以前からある概念だ。 どっちかっていうと動的型付け言語では配列が柔軟性あり過ぎてタプルと 似た物になってしまった感じで、順番が逆。
>>961 >タブルはPython発ではなく、それ以前からある概念だ。
数学的素養があれば、そんなことは常識だろ
それを配列というコレクションの概念と混同して実装したのが問題なんだよ
情報系だとタプルって「組」って意味ぐらいしか持ってない気がする
>>955 >>956 ()で要素数0のタプルを表現できる
カンマつけるのは(1 + 2) * 3 とかの結果が(3,3,3)になったりしたら困るからじゃね
マスター持ってても数学的素養がないとかいわれるのか
>>955 >要素数が0のリテラルが記述できないのは矛盾している
>>> reduce(lambda a,b: (a,b),[],[])
[]
>>> reduce(lambda a,b: (a,b),(),())
()
>>> isinstance(reduce(lambda a,b: (a,b),[],[]), tuple)
False
>>> isinstance(reduce(lambda a,b: (a,b),[],[]), list)
True
>>> isinstance(reduce(lambda a,b: (a,b),(),()), list)
False
>>> isinstance(reduce(lambda a,b: (a,b),(),()), tuple)
True
>>964 いまどき大学の履修科目で公理的集合論が必修のところとかあるの?
理工系はおろか数学科すら怪しい気がする
>>966 古典的集合論なら今でも理工系学部の初年度で必修だと思うが、公理的のほうは知らん
ただ、ここまでの議論の流れと公理的集合論との関連性は何があるん?
横から見てるだけだけどいろいろ参考になる
>>967 タプルが直積を意味するときに要素一つじゃいかんだろう
っていうのは外延性公理の要請なんじゃないの
対ならもちろん区別できるけど
(a, b) = {{a}, {a, b}}
(b, a) = {{b}, {a, b}}
一要素のタプルは一要素の集合と区別できない
(a) = {a}
a = {a}
ふにゃふにゃした結論で申し訳ないが
直積集合自体が強力な操作(wikipediaから借りてきた言葉だけど)なので一応そのへんは関係あるかと
970 :
956 :2013/08/05(月) 13:45:13.92
>>963 自分へのレスの中でこれが一番説得力があって感心した!
すっきりしたよありがとう
971 :
デフォルトの名無しさん :2013/08/05(月) 14:33:44.83
python を今日始めました。 python の正規表現で、\p{Pf} みたいな「文字クラス」を使う方法はありますか? import re では、ダメのようです。
>>969 スマンが、数論は不勉強なので(正しいのか間違っているのかすら)よくわからん
ただ、「>タプルが直積を意味するときに要素一つじゃいかんだろう」という主張は、
「直積集合としてのタプル」という仮説において、「直積とは....である順序対の集合である」
という(Wikipadiaの該当ページ冒頭にある)定義を元に導かれ、
N組に関する次元数が2以上であるという主張も(対の拡張として)自然に導かれると考える
そして、この仮説を前提とする限り、タプルは古典的集合論で形式的に定義できるので、
公理的集合論を持ち出す必要は無いと思う
で、タプルに関するもう一つの仮説「データ構造としてのタプル」、これが
>>963 の言う
「情報系における組」の意味だと思うけど、この場合、N組の次元数は0以上になる
ところが次元数が0ないし1の時、上記の古典的な「順序対の集合」では定義できない
これを形式的に定義しようと考えた時、もしかすると公理的集合論が必要になるのかもしれない
973 :
955 :2013/08/05(月) 14:42:03.19
>>963 ,965
Pythonは要素数が0のタプルを表現できるので、
>>955 の「先頭行」について撤回します
HaskellやMLのような言語では () は単位型という(タプルではない)データ型になるので、
これと混同して早とちりしていました
タプルはイミュータブルな配列としか見てないなあ 実用言語の Python で単にタプルという名前から概念的に議論するのは不毛な気がする
975 :
デフォルトの名無しさん :2013/08/05(月) 15:16:22.57
>>> reduce(lambda a,b: a+[b,],(4,5,6),(1,2,3)) Traceback (most recent call last): File "<stdin>", line 1, in <module> File "<stdin>", line 1, in <lambda> TypeError: can only concatenate tuple (not "list") to tuple >>> reduce(lambda a,b: a+(b,),(4,5,6),(1,2,3)) (1, 2, 3, 4, 5, 6) タプルはイミュータブル(キリっ
それで immutable であることが否定されているの? (1,2,3) も (4,5,6) も変更されてないよね?
978 :
969 :2013/08/05(月) 15:43:35.39
>>976 たぶん、タプルが配列とみなせる(
>>974 )のであれば、
タプルとミュータブルな配列に対するイミュータブルな操作は
同じ結果となるはずだけど、実際には違った
ということを言いたいのではないかと思われ
同じシーケンスでも文字列とリストの接続ができないように リストとタプルの接続もできないという当然の結果が返ってきてるだけで タプルがイミュータブルな配列とみなせるかどうかとは全く関係のない話だと思うけどなあ
そもそも
>>975 はイミュータブルな事にしか触れてないうえに、非破壊的な操作しかしてない謎っぷり
みんなえらいなあ
984 :
デフォルトの名無しさん :2013/08/06(火) 13:44:25.93
Ruby万歳!Python死ねw
Ruby信者って民度が大陸並なのな。
おそらく
>>984 はRubyスレやバトルスレであばれていたのと同じヤシだと思う
どこにいっても相手にされなくなったので、かまってほしいのではないかと....
Ruby スレで Python 厨が暴れると反論罵倒が殺到するが、 Python スレに Ruby 厨が来てもほとんどスルー これが大人の余裕って香具師か。
暴れれば批判が殺到するのは当たり前 このスレでもRuby信者と思われるカキコはいくつかあるけど、 暴れるというほどのものではないから静かなんだろな
両方使うのでどっちも読み書きしてるけど Ruby スレは最近ちょっとおかしくなってる というか定期的におかしくなるのが Ruby スレ あんまり波がないのが Python スレ
単に人少ないだけやろ
いまは大差ないんじゃないかな
自演ばっかw
せやな
994 :
デフォルトの名無しさん :2013/08/06(火) 19:35:21.44
自分で試してみたら list も tuple もアクセス速度変わらなさそうだったのですが
そら変わらんだろう
tuple って list よりはやいって聞いたことがあったんですがあれは作るときの話だったのかな
1000 :
デフォルトの名無しさん :2013/08/07(水) 08:46:42.75
Ruby マンセー
1001 :
1001 :
Over 1000 Thread このスレッドは1000を超えました。 もう書けないので、新しいスレッドを立ててくださいです。。。