[表示 : 全て 最新50 1-99 101- 201- 2chのread.cgiへ]
Update time : 01/23 08:36 / Filesize : 59 KB / Number-of Response : 215
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

くだすれPython(超初心者用) その21



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が作ろうとしてるものと、答えようとする人間の想像するものが違ってるくるかもしれないから
ディレクトリ内のファイル数とかも含めてもうちょい詳しく書いたほうがいい






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](*・∀・)<59KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef