1 名前:デフォルトの名無しさん [2014/01/02(木) 12:52:08.79 ] このスレッドは、他のスレッドでは書き込めない超低レベル、 もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです。 へび使いが優しくコメントを返しますが、お礼は Python の布教と初心者の救済をお願いします。 エラーを解決したいときはエラー表示や環境(バージョン/IDE or command line)を略さずに書き込んで下さい。 騙りが頻発しています。質問する方は一時的なトリップをつけることを検討して下さい。 次スレは >>985 辺りで 前スレ くだすれPython(超初心者用) その20 toro.2ch.net/test/read.cgi/tech/1387082467/ 関連スレ Pythonのお勉強 Part49 toro.2ch.net/test/read.cgi/tech/1387528488/ ◆関連リンク Python の Home Page ttp://www.python.org/ ◆長いコードはこういうところにはってください ttp://ideone.com/ ttp://codepad.org/ ttp://pastebin.com/ dpaste.com/ ◆まとめwiki ttp://python.rdy.jp/
2 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 12:56:27.58 ] |....,,__ |_::;; ~"'ヽ | //^''ヽ,,) | i⌒" | ∀`) < 誰もいない きのこるならいまのうち |⊂ | ノ _,,,......,,__ /_~ ,,...:::_::;; ~"'ヽ (,, '"ヾヽ i|i //^''ヽ,,) ^ :'⌒i i⌒" |( ´∀`) < きのこ のこーのこ げんきのこ ♪ |(ノ |つ | | ⊂ _ ノ ""U _,,,......,,__ /_~ ,,...:::_::;; ~"'ヽ (,, '"ヾヽ i|i //^''ヽ,,) ^ :'⌒i i⌒" (´∀` )| < エリンギ まいたけ ブナシメジ ♪ ⊂| (ノ | | | ヽ _ ⊃ .U"" | | ミ | ミ サッ! | ミ |
3 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 12:57:08.78 ] ┌─┐ │●│ └─┤ _ ∩ ( ゚∀゚)彡 ┌─┬⊂彡 │●│ おっぱい!おっぱい! └─┘
4 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 12:58:00.03 ] >>1 python.rdy.jp/wiki.cgi?page=ThreadArchive python.rdy.jp/wiki.cgi?page=%B4%D8%CF%A2%BF%DE%BD%F1 ここも古いのでさっさと直せ
5 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 13:02:30.83 ] 前スレ990です。>>1 乙。
6 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 13:03:22.25 ] いちおつ。規制厳しいね
7 名前:デフォルトの名無しさん [2014/01/02(木) 13:14:54.45 ] 976 名前:デフォルトの名無しさん [sage]: 2014/01/02(木) 11:50:33.13 >>975 >>973 より引用 interactivepython.org/courselib/static/pythonds/BasicDS/stacks.html#what-is-a-stack この一文を訳してみてね。簡単なんでしょ? > The base of the stack is significant since items stored in the stack that are closer to the base represent those that have been in the stack the longest.
8 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 14:40:22.27 ] >>7 単語と接続詞が多すぎて全く意味不明だな スタックのことだろうというのはIT畑の人なら雰囲気でわかるが… もう少し短くスマートな文を書こうという気はないのだろうか英米人は
9 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 16:06:33.56 ] すでに2時間黙ってるけどどうしたの?癇に障った?ねえ黙ってないで答えてよ。黙らなくていいよ。黙る気ないでしょ?無理しなくていいんだよ。黙らなくていいんだよさあさあさあ
10 名前:!omikuji!dama mailto:sage [2014/01/02(木) 16:09:43.88 ] 何やってんだかw
11 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 16:39:20.24 ] 新年早々ね
12 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 17:18:30.56 ] スレが過疎なのは Pythonがあまりにも完璧・使いやすすぎて 語る必要もないということなのだろうな 良きことだ
13 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 17:48:14.14 ] それじゃあ質問 今居る関数の、関数オブジェクトを表している特殊変数ありませんか? 下記のような時 __self__ みたいな特殊変数があると this = hoge_hoge_fuga_fuga しなくて済むのだけど def hoge_hoge_fuga_fuga(): this = hoge_hoge_fuga_fuga if 'x' not in this.__dict__: this.__dict__['x'] = 100 this.x += 1 print(this.x) hoge_hoge_fuga_fuga() hoge_hoge_fuga_fuga()
14 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 18:47:32.96 ] >>13 特殊変数はない。スタックフレームから参照する方法はあるけど、いろいろな状況での利用を考えると面倒なのでお勧めしない。 目的によって異なるけど、考えられる代案はこんなとこ 関数定義時に関数オブジェクトを参照し属性を設定する -> デコレータが使える 値を持つ、呼び出し可能なオブジェクトを作りたいなら __call__ を調べてみよう クロージャ的な用法(関数内にデータを内包したい)なら、ジェネレータにするといい。@see also itertools.count ideone.com/mFBFqg
15 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 19:06:36.30 ] すみません、初心者なんですが以下の日本語部分がすべて文字化けしてしまいます。 .pyファイルを秀丸などでutf-8nで保存しても次開くとSJISになってしまっているのでそれが原因でしょうか? 解決方法を教えてください。。 # -*- coding: utf-8 -* import urllib2 from BeautifulSoup import BeautifulSoup url = "YahooTOPのURL" soup = BeautifulSoup(urllib2.urlopen(url).read(), fromEncoding='utf-8') print soup
16 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 19:09:39.12 ] >>14 ありがと。無いなら諦めるw 使用目的は、単に関数内スタティック変数として使うため。 入力と結果が1対1で対応してる処理が重たい関数で、 結果を辞書にキャッシュさせるのにスタティック変数は良く使うので
17 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 19:44:33.61 ] >>15 そのurlって実在するの? 日本語を含むurlなんて聞いたことがないんだが
18 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 19:49:04.57 ] >>15 文字列前にuをつけてみて str型ではなくunicode型じゃないとうまくいかない >>16 横からだけど、そういうことならグローバル直下に辞書をおくといいよ python3だったらfunctools.lru_cacheをつかうのもいいよ
19 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 20:31:40.15 ] >>15 >.pyファイルを秀丸などでutf-8nで保存しても次開くとSJISになってしまっているのでそれが原因でしょうか? ファイルに日本語がなくてASCIIだけだったら、エディタの文字コード判別がデフォルトのSJISとみなしているんじゃないかな。ソースに日本語のコメント入れて保存してみそ。 それでこれは問題の文字化けとは多分関係ない。 yahooトップページって文字コードutf-8だっけ?その辺が怪しそうな気がする
20 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 20:37:45.39 ] >>17 URL規制で書けなかったので日本語にしてました >>18 soup = unicode(soup.prettify(), soup.originalEncoding) すみません、色々調べてこれ入れたらできました! >>19 あーSJISのままなのはそういう意味だったんですね。。スッキリしました。yahooはutf-8でした! 皆さんありがとうございました
21 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 20:39:20.74 ] >>15 print soup.decode('utf-8') こうかな?
22 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 20:46:04.09 ] >>21 それだとエラーでました。 TypeError: 'NoneType' object is not callable
23 名前:デフォルトの名無しさん mailto:sage [2014/01/02(木) 23:22:59.34 ] >>16 そういった用途なら functools.lru_cacheに+1 スタティック変数について、他の代案も紹介しておくと、 グローバルの代わりにデフォルト引数に辞書を入れて、スタティックな領域として使う方法もある 注意点として、Pythonではデフォルト引数の評価タイミングが関数定義時なので、 他の言語からの人がコードを読んだ時、解りにくくなるという懸念はあるけど、 キャッシュに使う辞書を引数に与えられるので、関数の単体テストはしやすくなります
24 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 02:16:58.20 ] b'2966'を整数型の2966に直すにはどうしたらいいのでしょうか
25 名前:24 mailto:sage [2014/01/03(金) 02:18:58.97 ] >>24 python3.3を使っています
26 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 02:30:36.06 ] >>24 int(b'2966'.decode('utf-8')) かなあ?
27 名前:24 mailto:sage [2014/01/03(金) 02:33:54.86 ] >>26 出来ました! ありがとうございます
28 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 02:34:54.92 ] int(b'2966')だけじゃだめなのか
29 名前:24 mailto:sage [2014/01/03(金) 02:42:01.88 ] >>28 それでいけました ありがとうございます
30 名前:デフォルトの名無しさん [2014/01/03(金) 07:52:37.85 ] pythonを2.6から2.7へバージョンアップしたら インストールしたモジュール使えなくなったんですけど これは参照している場所が違うからでしょうか OSはMACです
31 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 08:44:13.17 ] >>18 >>23 ありがと 標準ライブラリにキャッシュ機能を提供してくれるものがあったとはPythonすげー デフォルト引数に辞書の方法は、簡単で便利ですね
32 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 16:13:53.83 ] ja.wikipedia.org/wiki/Flask 軽量ウェブアプリフレームワーク Flask の解説で、 以下のサンプルコードは、ルートパスにアクセスすると "Hello World!" を表示するだけのアプリケーション from flask import Flask app = Flask(__name__) @app.route("/") def hello(): return "Hello World!" if __name__ == "__main__": app.run() ↑こんなのがあります。この appオブジェクトはどうして hello() の存在を認識できているんでしょうか? どうか解説をお願いします。 @〜 は関数アノテーション?、これもよく分かっていません。
33 名前:デフォルトの名無しさん mailto:sage [2014/01/03(金) 16:44:09.72 ] >>32 ttp://docs.python.jp/3.3/reference/compound_stmts.html#function ttp://docs.python.jp/3.3/glossary.html#term-decorator
34 名前:32 mailto:sage [2014/01/03(金) 18:54:01.59 ] class App: def __init__(self): self.dic = {} def route(self,key): def proc(fun): self.dic[key] = fun return proc myapp = App() @myapp.route("/") def foo(): return "Welcome!" @myapp.route("/menu") def foo(): return "Sorry, Japanese Only!" myapp.dic["/"]() => "Welcome!" myapp.dic["/menu"]() => "Sorry, Japanese Only!" ありがとうございます。ほぼ理解できました。
35 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 00:01:18.74 ] そんな彼に忍び寄る恐ろしい罠
36 名前:デフォルトの名無しさん mailto:sage [2014/01/04(土) 23:07:58.70 ] >>30 まずそのモジュールの2.7用が出てないかじゃないでしょうか。
37 名前:デフォルトの名無しさん mailto:sage [2014/01/07(火) 16:31:27.57 ] >>8 最近みた日本語の悪文だとこんなのがある ja.wikipedia.org/wiki/%E4%B8%B8%E4%BA%95
38 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 00:08:29.85 ] >>37 読解にメモリ馬鹿食いする文章だな
39 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 13:40:33.62 ] num = 10 self.board = [[0]*num]*num for i in board: for j in i: j = 1 こんな風にやっても案の定書き換えられてないんですけど! リストを書き換えるスマートな方法を教えて欲しいんですけど! 盤面のオブジェクトを作って色んな書き換えるメソッドを呼び出して何度も書き換える予定なんですけど! とりあえずライフゲーム作るんですけど!
40 名前:デフォルトの名無しさん [2014/01/08(水) 15:25:06.10 ] pastebin.com/Cba1PTZg こういうのとか >>> import test >>> f = test.Foo(3) >>> f.update_list(3) >>> print(f.get_list()) [[3, 3, 3], [3, 3, 3], [3, 3, 3]]
41 名前:39 mailto:sage [2014/01/08(水) 16:09:58.94 ] >>40 ありがとうございます map関数の使い方を勉強してきます
42 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 17:25:57.03 ] a = [[0]*3]*3 print(a) a[1][1] = 1 print(a) の実行結果が [[0, 0, 0], [0, 0, 0], [0, 0, 0]] [[0, 1, 0], [0, 1, 0], [0, 1, 0]] になります 期待してる結果は [[0, 0, 0], [0, 1, 0], [0, 0, 0]] です これは一体何が起こっているのでしょうか 助けてください Version : 3.3.3 Version tuple: ('3', '3', '3') Compiler : MSC v.1600 32 bit (Intel) Build : ('v3.3.3:c3896275c0f6', 'Nov 18 2013 21:18:40')
43 名前:デフォルトの名無しさん [2014/01/08(水) 17:35:05.69 ] ちなみに、python2と3でmap関数の返り値違う python2はリスト型 >>> type(map(add, a)) <type 'list'> python3はmap型 >>> type(map(add, a)) <class 'map'> map型のイテレータは一度処理終わったら、もどってくれないから注意 >>> b = map(add, a) >>> list(b) [2, 3, 4] >>> list(b) []
44 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 17:40:29.16 ] >>42 参照だから >>> id(a[0][1]) 139713178044032 >>> id(a[1][1]) 139713178044032 >>> id(a[2][1]) 139713178044032 [0]*3
45 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 17:42:33.42 ] 最後の行は無視して
46 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 17:57:47.61 ] >>42 あなたの希望は以下で満たせるはず。 後は自分で頑張って勉強して、それでも分からなければまた聞きに来て。 >>> a = [[0] * 3] * 3 >>> print(a) [[0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> for x in a: ... print("id(x) =", id(x)) ... id(x) = 140290763245184 id(x) = 140290763245184 id(x) = 140290763245184 >>> a[1][1] = 1 >>> print(a) [[0, 1, 0], [0, 1, 0], [0, 1, 0]] >>> a = [None] * 3 >>> for i, x in enumerate(a): ... a[i] = [0] * 3 ... >>> print(a) [[0, 0, 0], [0, 0, 0], [0, 0, 0]] >>> for x in a: ... print("id(x) =", id(x)) ... id(x) = 140290763245544 id(x) = 140290763244464 id(x) = 140290763245184 >>> a[0][0] = 1 >>> a[1][1] = 1 >>> a[2][2] = 1 >>> print(a) [[1, 0, 0], [0, 1, 0], [0, 0, 1]]
47 名前:42 mailto:sage [2014/01/08(水) 18:13:05.04 ] >>44 ,46 ありがとうございます 頑張ります
48 名前:42 mailto:sage [2014/01/08(水) 18:17:03.24 ] リストの初期化の仕方で参照するところが変わるんですね 完全に嵌ってました
49 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 18:24:27.06 ] >>48 Python的にはノート(2)より ttp://docs.python.jp/3.3/library/stdtypes.html#common-sequence-operations [[0] * 3 for i in range(3)] ミュータブルな要素のみ内包表記に置き換える感じで
50 名前:デフォルトの名無しさん mailto:sage [2014/01/08(水) 18:25:10.19 ] あとはリスト内包表記使うとか >>> a = [[0 for row in range(3)] for row in range(3)] >>> a[1][1]=1 >>> a [[0, 0, 0], [0, 1, 0], [0, 0, 0]]
51 名前:デフォルトの名無しさん mailto:sage [2014/01/09(木) 01:12:22.59 ] ライフゲームってDemoに有ったような気がして、探してみたけど、 ソースから入れないと入らないのかな。./Tools/demo/life.py 替わりにこんなの見つけた # タートルのデモ > python3 -mturtledemo # tkのデモをpythonから実行 from tkinter import Tk tk = Tk() tk.eval("source c:/Python33/tcl/tk8.5/demos/widget") tk.mainloop()
52 名前:デフォルトの名無しさん mailto:sage [2014/01/11(土) 21:56:49.85 ] >>> a=[1,2,3,4,5,0] >>> [(i, x) for i, x in enumerate([x for x in a if x >= 3], start=1)] [(1, 3), (2, 4), (3, 5)] こういう風に、リストから条件を満たす要素だけ抜き出して 連番を付与してタプルのリストを作る目的がある しかし、入力がリストではなく以下のようなテキストファイルの場合 1 2 3 4 5 0 enumerateの行にファイル読み込み処理をぶち込んでコードを短い ままで済ますことは可能だろうか? 調べてみたのだが、ワンライナーでファイル処理を行う例が見つからなかった
53 名前:デフォルトの名無しさん mailto:sage [2014/01/11(土) 22:15:37.35 ] >>52 openも一緒にやりたいってこと?
54 名前:デフォルトの名無しさん mailto:sage [2014/01/11(土) 22:29:12.77 ] >>52 自分も初心者だけど f = open('data.txt') [(i, x) for i, x in enumerate([x for x in map(lambda s:int(s.rstrip('\r\n')), f) if x >= 3], start=1)]
55 名前:デフォルトの名無しさん mailto:sage [2014/01/11(土) 22:29:54.85 ] >>53 そう スクリプト言語の用途として テキストフィルタ的なものはよく出会うので ファイル処理を短く済ます定番句があると 楽だなあと思う次第
56 名前:デフォルトの名無しさん mailto:sage [2014/01/11(土) 22:39:24.75 ] >>54 おおっと書いたとたんにレスが サンクス そのopenも一行にまとめてしまえないだろうかという話
57 名前:デフォルトの名無しさん mailto:sage [2014/01/11(土) 22:41:17.49 ] じゃあ… [(i, x) for i, x in enumerate([x for x in map(lambda s:int(s.rstrip('\r\n')), open('data.txt')) if x >= 3], start=1)]
58 名前:デフォルトの名無しさん mailto:sage [2014/01/11(土) 22:43:51.34 ] >>55 with open('data.txt') as f: l = [] で一行にはなるけど,短くはむりぽ
59 名前:デフォルトの名無しさん mailto:sage [2014/01/11(土) 22:51:26.70 ] >>57 カッコだらけなんだけど、インデントで書けないものか....
60 名前:デフォルトの名無しさん mailto:sage [2014/01/11(土) 22:53:46.58 ] >>59 1行で書きたいのか複数行で書きたいのどっちなんだよw
61 名前:デフォルトの名無しさん [2014/01/11(土) 23:15:42.68 ] tkinterっていろいろできそうなのに あんまりはやってないようなのはなぜ? ここのサイトが超わかりやすい! www.shido.info/py/tkinter1.html
62 名前:デフォルトの名無しさん mailto:sage [2014/01/11(土) 23:21:44.22 ] リストの値をそれぞれ総当たりで含まれるかどうかをチェックして、含まれていれば削除したいんですがどうやればいいでしょうか? list['abc','abcd','bcd','bbt','yyf','zat']を list['abcd','bbt','yyf','zat']にしたい for s in range(len(list)): x = list.pop() for k in list: if not x in k: list.append(x) これだとうまくいきませんでした
63 名前:デフォルトの名無しさん mailto:sage [2014/01/11(土) 23:29:01.42 ] >>62 リストの中の要素が重複してないならset使ったほうが楽かも l = ['abc','abcd','bcd','bbt','yyf','zat'] k = ['abc','bcd'] egg = list(set(l) - set(k))
64 名前:デフォルトの名無しさん mailto:sage [2014/01/11(土) 23:30:05.70 ] あ,どうせ消すんだから重複関係ないか・・・
65 名前:デフォルトの名無しさん [2014/01/12(日) 00:15:57.50 ] PythonってRubyのRakeみたいなビルドとか自動化に使えるスクリプト ツールってあるの?
66 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 00:22:45.66 ] GYP
67 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 00:25:00.51 ] Sons
68 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 02:30:10.24 ] x Sons o SCons
69 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 05:45:41.99 ] awkみたいな行に対して処理をする起動オプションはない。 よくあるファイル処理のスクリプトはfileinputモジュール使う sedのようなinplaceなファイルの書き換えも支援してくれる。 ワンライナ自体python向きではないけど、一応短くしてみると ファイルから数列を読み込むのは、 intは前後の空白文字取り除いて変換してくれるので map(int, open("data.txt")) で済むよ。 [(i,x) for i,x in enumerate(...)] は list(enumerate(...)) 用途によってはlist()も不要。
70 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 09:36:05.29 ] Pythonでコーディングされてるオープンソースのソフトってどんなのがあるの?
71 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 09:42:19.69 ] 全くありません ゼロです
72 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 09:47:40.52 ] >>70 ja.wikipedia.org/wiki/Python を使っている製品あるいはソフトウェアの一覧 一部 Python で書かれてる的なのも含まれてるので注意
73 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 09:53:04.05 ] Sourceforgeだとこれかな sourceforge.jp/softwaremap/trove_list.php?form_cat=178 (プログラミング言語にPythonを使用しているプロジェクトの一覧)
74 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 10:27:14.21 ] じゃあこんなのも。星 1000 以上 https://github.com/search?l=Python&q=stars%3A%22%3E+1000%22&type=Repositories
75 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 13:26:16.84 ] じゃあ俺も俺も。 https://code.google.com/hosting/search?q=label%3aPython
76 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 16:04:00.58 ] ゴミコードがいくら沢山集まっても、それはゴミの山である ―カーニハン―
77 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 16:27:44.37 ] >>62 pythontutor.com/visualize.html ここにコード書いてステップ実行すると、 1ステップ毎に変数やリストのデータがどのように変化するか表示してくれるので解りやすいよ。 同じリスト内の重複を取り除くのか、2つのリストから差分を除くのか 題意が読み取れなかったけど。リストで順序を保つなら collections.OrderedDict.fromkeys(xs).keys()
78 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 17:40:57.01 ] >>62 import __builtin__ list = ['abc','abcd','bcd','bbt','yyf','zat'] gomi = [] for i in range(len(list)): for j in range(len(list)): if i != j: if list[i] in list[j]: gomi.append(list[i]) break print __builtin__.list(set(list) - set(gomi))
79 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 18:18:34.03 ] >>62 L = ['abc','abcd','bcd','bbt','yyf','zat'] k = ['abc','bcd'] for i in range(len(L)-1, -1, -1): if L[i] in k: del L[i] print(L)
80 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 18:21:28.98 ] 含まれるって文字列中にって事だったのか.これで合ってる? src = ["abc", "abcd", "bcd", "bbt", "yyf", "zat"] dst = [x for x in src if all(not x in y for y in src if x != y)] print(dst)
81 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 18:22:18.95 ] なぜ多くのプロジェクトがPythonの古いバージョンをサポートし続けるのか ストーリー by headless 2014年01月12日 12時55分 developers.slashdot.jp/story/14/01/11/2115245/
82 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 18:25:49.84 ] not any にした方が効率よかったかも dst = [x for x in src if not any(x in y for y in src if x != y)]
83 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 18:33:34.51 ] >MozillaのNathan Froyd氏は、Szorc氏の主張はソフトウェアを他の人々に提供する側の視点が欠けていることを指摘している。 >ユーザーがアップグレードを自由に行えるとは限らず、新しいバージョンで削除されたAPIを必要としていることもあるし、 >新しいバージョンで動作するようにコードを修正してテストするのは手間がかかる。 これ何の冗談だよ クソいラピッドリリースをFireFoxに導入しくさってくださりやがりましたMozillaお前がその発言すんのかよ コブラに噛まれて死ね 5回死ね
84 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 18:36:56.81 ] ワロタ
85 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 19:15:41.16 ] >>82 src = ['abc','abcd','abcd','abcd','bcd','bbt','yyf','zat'] ↑こんな風に重複したものがあると残るからインデックスで比較するのがよさげ dst = [x for i,x in enumerate(src) if not any(x in y for j,y in enumerate(src) if i!=j)] 多重ループ出来るの今日初めて知ったthx
86 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 19:19:47.69 ] >>81 こっちでやろうや toro.2ch.net/test/read.cgi/tech/1387528488/ >>62 への回答の邪魔になりそうだし
87 名前:85 mailto:sage [2014/01/12(日) 19:25:20.62 ] ごめん間違い、インデックスだけじゃ無理か
88 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 19:45:10.90 ] dst = [x for i,x in enumerate(src) if not any(x in y for y in src if x!=y) and x not in src[i+1:]]
89 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 19:46:42.42 ] ideone.com/gMl6bw 関数型?っぽく
90 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 19:50:50.66 ] >>88 自分のプログラミングレベルだと、その内包表記の詰め込み具合はきつい
91 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 19:52:43.69 ] >>85 リスト要素の重複は、予め取り除いてから篩いに掛けた方がいいかな。 ループの回数も抑えられるし。
92 名前:82 mailto:sage [2014/01/12(日) 20:44:55.26 ] 展開するとこんな感じ dst = [] for x in src: for y in src: if x in y and x != y: break else: dst.append(x) ここのelseは、ifではなく、内側のforに対応するelse。breakで抜けなかった時に実行されます。 結果から重複を取り除く場合は、for y の前に if x in dst: continue で対応。
93 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 22:30:52.10 ] ttp://ideone.com/lRddti os.path.isfileとos.path.existsがうまく行きません 存在しているのにFalseになったり 存在しないのにTrueになったりします なにか勘違いしているところありますでしょうか? python33です
94 名前:93 mailto:sage [2014/01/12(日) 22:41:32.79 ] すいません なんでもなかったです・・・
95 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 23:00:40.74 ] #set(src)の要素のうち、他のどの要素の一部(部分文字列)になっていないもののリスト(順番が変わっちゃうけど) #src = ['abc', 'abcd', 'abcd', 'abcd', 'bcd', 'bbt', 'yyf', 'zat'] #なら dst = ['abcd', 'yyf', 'zat', 'bbt'] dst = [x for x in set(src) if all(x not in y for y in set(src)-set([x]))] 内包表現は書いた本人ですら後で分んなくなることがあるから困るけど好き。
96 名前:デフォルトの名無しさん mailto:sage [2014/01/12(日) 23:16:56.22 ] >>93 パス(fpath)じゃなく数値(a)を渡してる
97 名前:デフォルトの名無しさん mailto:sage [2014/01/13(月) 00:41:46.88 ] >>92 オリジナル(>>82 )が関数型の内包表記で書かれているんだから、 わざわざ手続き型で書き直すでのはなく、 まず最初は以下のように展開するのがPythonらしいと思ふ dst = [ x for x in src if not any( x in y for y in src if x != y ) ]
98 名前:デフォルトの名無しさん mailto:sage [2014/01/13(月) 00:51:12.78 ] 繰り返し中での一時オブジェクト生成は、極力排除した方が実行効率良いよ。 # >>62 from collections import OrderedDict unique = lambda xs: OrderedDict.fromkeys(xs).keys() src = unique(['abc', 'abcd', 'abcd', 'abcd', 'bcd', 'bbt', 'yyf', 'zat']) dst = [x for x in src if not any(x in y for y in src if x != y)]
99 名前:62 mailto:sage [2014/01/13(月) 03:07:06.89 ] >>62 です うわこんなにレスをいただいてしまってなんかすみません・・・ 質問の後にmapや再帰?でやってみてたんですが上手く行かず困っていました いただいたレスを一つずつ試して見ます ありがとうございました!
100 名前:デフォルトの名無しさん mailto:sage [2014/01/13(月) 09:42:32.16 ] 特定のフォルダを五分おきくらいに見て、新たに作成されたファイル名を 把握するっていうサーバー的アプリを作りたいが、監視でCPU100%になるのを 防ぐためには、スレッドという機能を使えばよいのかな? 何をしたいかというと、クライアントPCからサーバーのフォルダにファイルを コピーすることで仕事のトリガーとするシステムを妄想しているのだ WEB系の技術でやるべきものだろうけど、そっち系の知識がゼロなので
101 名前:デフォルトの名無しさん mailto:sage [2014/01/13(月) 10:03:27.10 ] >特定のフォルダを五分おきくらいに見て、新たに作成されたファイル名を >把握するっていうサーバー的アプリを作りたい で運用に支障がでるほど、負荷がかかるとは思えない サーバ的ってあるけどクライアント的な部分はどいういうものなの >>100 が作ろうとしてるものと、答えようとする人間の想像するものが違ってるくるかもしれないから ディレクトリ内のファイル数とかも含めてもうちょい詳しく書いたほうがいい