カテゴリー

アーカイブ






Archive for the 'python' Category

09 20th, 2008

pythonで

abc = ['a','b','c']
xyz = ['x','y','z']
for a, x in abc, xyz:
    print a,x

みたいな書き方をしたいんだけど
上手いやり方が思いつかない。
(追記)mynzさんより、zip()を使用する方法で解決できることが判明。サンクスです!

abc = ['a','b','c']
xyz = ['x','y','z']
for a, x in zip(abc, xyz):
    print a,x

一応イテレータを自作した方法も残しておきます。

class multilist():
def __init__(self,*ml):
self.li = ml
self.max = min([len(x) for x in ml])
self.cnt = 0

def __iter__(self):
return self

def next(self):
self.cnt += 1
if self.cnt > self.max:
raise StopIteration
return [x[self.cnt-1] for x in self.li]

使い方は以下

abc=['a','b','c']
ddd=['d','e','f']

for x,y in multilist(abc,ddd):
print x,y
> a x
> b y
> c z



pythonでアルファベットリストを生成する

abc = [chr(x) for x in range(65, 91)]
# Result: ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'] #

よく考えたら毎回生成しないでもいいのか…



MEL sortをpythonでラップ

Author: あきを
06 21st, 2008

MELのsortが思った通りの動きをしないときが
あったのでpythonでラッピングしてみた

global proc string[] pysort(string $array[]){
  python("strArray = '"+`stringArrayToString $array " "`+"'.split()¥nstrArray.sort()");
  return python("strArray");
}

電車の中なのでpython CEでしか動作確認してませんが
大体こんな感じ



新しいRendererを作るか

Author: あきを
06 14th, 2008

昨日はPython Coode Reading にいく予定だったのですが
仕事で都合がつかず。ノートPCもちゃんと持ってきたのになぁ。無念。
まぁ いいさ 来週作業の展望が開けたし

さて仕事が忙しくなってきたので、何か作りたくなってきた(w
ほとんど放置しているscadinaviaは、勉強しながら作っていたので
スパゲッティ化し、もう手を入れるのも面倒くさい

それなら、新しいレンダラを作ろう!
今度のレンダラはデバッグしやすいシンプルな構造にしていこう
そういう訳でまずは設計書作るか



pymel

Author: あきを
05 10th, 2008

Pymel Python Module - Syntax / Scripting Tools for Maya
http://www.highend3d.com/maya/downloads/tools/syntax_scripting/Pymel-4844.html

maya pyhtonのラッパー

maya pythonをよりpythonぽい書き方でかけます
maya python:

import maya.cmds as mc
nodes = mc.ls(sl=1)
mc.connectAttr(nodes[0]+".sx", nodes[1]+".sx")
pos = mc.getAttr(nodes[0]+".t")
mc.setAttr(nodes[1]+".t", pos[0][0], pos[0][1], pos[0][2])

pymel:

from pymel import *
nodes=ls(sl=1)
nodes[0].sx >> nodes[1].sx
pos = nodes[0].translate.get()
nodes[1].translate = pos

うん、mayaPythonでgetAttrしたときタプルの中の配列として返すのは仕様としておかしいと思うわ

便利なのは分かるんですけど
こういうものってデフォルトで用意されてないと仕事で使う気がしないんですよねー

でもこの書き方はかなり魅力的
オブジェクトのメソッドでgetとかsetとかするのがやっぱりしっくりくるし
connectAttrの書き方も直感的で良いです

昨日は久々にたくさんのコードを書いた。
UIをゼロから作ったんで無駄にformLayoutに行数かかっただけなんだけど
なんとも無駄な事をしているなぁ
とにかくキーボードを打つ回数を減らしたい