Discussion:
[CPyUG] 请教一个python产生序列的问题
jacky wu
2010-06-30 02:20:57 UTC
Permalink
ÇëœÌÒ»žöpython²úÉúÐòÁеÄÎÊÌ⣬
ŒŽ£¬ÈçºÎ²úÉú 000 001 002 003 ... 999 ÑùµÄÐòÁÐ

¶àл¡£
--
ÀŽ×Ô: `python-cn`:CPyUG ~ »ªòþÓû§×é | ·¢ÑÔ:python-***@googlegroups.com
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
Jimmy Kuu
2010-06-30 02:22:47 UTC
Permalink
['%.3d' % i for i in range(1000)]
Post by jacky wu
ÇëœÌÒ»žöpython²úÉúÐòÁеÄÎÊÌ⣬
ŒŽ£¬ÈçºÎ²úÉú 000 001 002 003 ... 999 ÑùµÄÐòÁÐ
¶àл¡£
--
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
ÀŽ×Ô: `python-cn`:CPyUG ~ »ªòþÓû§×é | ·¢ÑÔ:python-***@googlegroups.com
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
jerry
2010-06-30 03:07:37 UTC
Permalink
x = []
for i in range(0,1000):
s = ("%03d")%(i)
x.append(s)

Œòµ¥£¬»¹²»·ÑÄÔŽü¡£Ð¡ÐÄÌdzԶàÁË£¬ÌðËÀÄã¡£
Post by Jimmy Kuu
['%.3d' % i for i in range(1000)]
ÇëœÌÒ»žöpython²úÉúÐòÁеÄÎÊÌ⣬
Post by jacky wu
ŒŽ£¬ÈçºÎ²úÉú 000 001 002 003 ... 999 ÑùµÄÐòÁÐ
¶àл¡£
--
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
ÀŽ×Ô: `python-cn`:CPyUG ~ »ªòþÓû§×é | ·¢ÑÔ:python-***@googlegroups.com
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
小浣熊
2010-06-30 04:58:56 UTC
Permalink
在jerry的基础上改了一小下,我个人最近喜欢这样写

['%03d'%i for i in range(1000)]

呵呵
Post by jerry
x = []
s = ("%03d")%(i)
x.append(s)
简单,还不费脑袋。小心糖吃多了,甜死你。
Post by Jimmy Kuu
['%.3d' % i for i in range(1000)]
请教一个python产生序列的问题,
即,如何产生 000 001 002 003 ... 999 样的序列
多谢。
--
退订:http://tinyurl.com/45a9tb//针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情:https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问!http://wiki.woodpecker.org.cn/moin/AskForHelp
--
退订:http://tinyurl.com/45a9tb//针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情:https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问!http://wiki.woodpecker.org.cn/moin/AskForHelp
--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-***@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.wood
Zhao Xiaohong
2010-07-03 08:36:13 UTC
Permalink
Python 2.6 以上可以用 itertools 里的 product [http://docs.python.org/library/
itertools.html#itertools.product].

from itertools import product
import string


for p in product(string.digits, repeat=3):
print ''.join(p)

PS:
非 Python 写法:

$ seq 000 999
Post by Jimmy Kuu
请教一个python产生序列的问题,
即,如何产生 000 001 002 003 ... 999 样的序列
多谢。
--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-***@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.or
机械唯物主义 : linjunhalida
2010-07-03 11:55:16 UTC
Permalink
... for i in range(n):
... yield "%.3d"%i
Post by jacky wu
for j in get_seq(12): print j
create a generator, and you can use it for further operation.
Python 2.6 ÒÔÉÏ¿ÉÒÔÓà itertools ÀïµÄ product [http://docs.python.org/library/
itertools.html#itertools.product<http://docs.python.org/library/%0Aitertools.html#itertools.product>
].
from itertools import product
import string
print ''.join(p)
$ seq 000 999
Post by jacky wu
ÇëœÌÒ»žöpython²úÉúÐòÁеÄÎÊÌ⣬
ŒŽ£¬ÈçºÎ²úÉú 000 001 002 003 ... 999 ÑùµÄÐòÁÐ
¶àл¡£
--
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
ÀŽ×Ô: `python-cn`:CPyUG ~ »ªòþÓû§×é | ·¢ÑÔ:python-cn-/***@public.gmane.org
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
victor lee
2010-07-03 12:03:43 UTC
Permalink
ÔÞÂ¥ÉÏ¡£
Post by 机械唯物主义 : linjunhalida
... yield "%.3d"%i
Post by jacky wu
for j in get_seq(12): print j
create a generator, and you can use it for further operation.
Python 2.6 ÒÔÉÏ¿ÉÒÔÓà itertools ÀïµÄ product [http://docs.python.org/library/
itertools.html#itertools.product<http://docs.python.org/library/%0Aitertools.html#itertools.product>
].
from itertools import product
import string
print ''.join(p)
$ seq 000 999
Post by jacky wu
ÇëœÌÒ»žöpython²úÉúÐòÁеÄÎÊÌ⣬
ŒŽ£¬ÈçºÎ²úÉú 000 001 002 003 ... 999 ÑùµÄÐòÁÐ
¶àл¡£
--
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
ÀŽ×Ô: `python-cn`:CPyUG ~ »ªòþÓû§×é | ·¢ÑÔ:python-cn-/***@public.gmane.org
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
Devin
2010-07-03 14:56:03 UTC
Permalink
class ClassA():
pass

class ClassB():
pass

def fun(name):
classname = 'Class'+name
classinstance = classname()
return classinstance

请问如何在python中实现类似java中Class.newInstance()的功能,可以按名字来
实例化不同的类

就如上面的py伪代码中那样,在调用fun函数时传入'A'或'B'就能生成ClassA或
ClassB的实例
--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-***@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.wood
shhgs
2010-07-05 13:22:34 UTC
Permalink
首先,这种问题应该开一个新的线索。不要随便跟在别人的帖子后面。

至于这个问题,去google搜索一下vars()。
--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-***@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wik
Devin
2010-07-03 15:04:01 UTC
Permalink
class ClassA():
pass


class ClassB():
pass


def fun(name):
classname = 'Class'+name
classinstance = classname()
return classinstance


请问如何在python中实现类似java中Class.newInstance()的功能,可以按名字来
实例化不同的类


就如上面的py伪代码中那样,在调用fun函数时传入'A'或'B'就能生成ClassA或
ClassB的实例
--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-***@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问!
机械唯物主义 : linjunhalida
2010-07-03 19:39:50 UTC
Permalink
def createClass(name):
if name =='a': return ClassA()
elif name =='b': return classB()
else raise Exception("class name error")
Post by Devin
pass
pass
classname = 'Class'+name
classinstance = classname()
return classinstance
ÇëÎÊÈçºÎÔÚpythonÖÐʵÏÖÀàËÆjavaÖÐClass.newInstance()µÄ¹ŠÄÜ£¬¿ÉÒÔ°ŽÃû×ÖÀŽ
ʵÀý»¯²»Í¬µÄÀà
ŸÍÈçÉÏÃæµÄpyαŽúÂëÖÐÄÇÑù£¬ÔÚµ÷ÓÃfunº¯ÊýʱŽ«Èë'A'»ò'B'ŸÍÄÜÉú³ÉClassA»ò
ClassBµÄʵÀý
--
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
ÀŽ×Ô: `python-cn`:CPyUG ~ »ªòþÓû§×é | ·¢ÑÔ:python-***@googlegroups.com
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
阿暖
2010-07-03 22:39:23 UTC
Permalink
有好几种方法:

一种是手动建一个字典:

class A(object):pass
class B(object):pass
class C(object):pass

D=dict(A=A,B=B,C=C)

a=d['A']()

也可以用eval:

a=eval('A')()

也可以使用globals():

a=globals()['A']()

还可以用元类把需要的类自动生成一个字典
D={}
class fact( type):
def __init__(cls,name,bases,dic):
D[name]=cls
class A(object):
__metaclass__=fact
def __init__(self):
print 'A'

print D
a=D['a']()
Post by 机械唯物主义 : linjunhalida
if name =='a': return ClassA()
elif name =='b': return classB()
else raise Exception("class name error")
Post by Devin
pass
pass
classname = 'Class'+name
classinstance = classname()
return classinstance
请问如何在python中实现类似java中Class.newInstance()的功能,可以按名字来
实例化不同的类
就如上面的py伪代码中那样,在调用fun函数时传入'A'或'B'就能生成ClassA或
ClassB的实例
--
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-***@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker
阿暖
2010-07-03 22:46:32 UTC
Permalink
其实就是找到类 然后在后面加个括号()
Post by 阿暖
class A(object):pass
class B(object):pass
class C(object):pass
D=dict(A=A,B=B,C=C)
a=d['A']()
a=eval('A')()
a=globals()['A']()
还可以用元类把需要的类自动生成一个字典
D={}
D[name]=cls
__metaclass__=fact
print 'A'
print D
a=D['a']()
Post by 机械唯物主义 : linjunhalida
if name =='a': return ClassA()
elif name =='b': return classB()
else raise Exception("class name error")
Post by Devin
pass
pass
classname = 'Class'+name
classinstance = classname()
return classinstance
请问如何在python中实现类似java中Class.newInstance()的功能,可以按名字来
实例化不同的类
就如上面的py伪代码中那样,在调用fun函数时传入'A'或'B'就能生成ClassA或
ClassB的实例
--
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-***@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http
Devin
2010-07-03 23:01:58 UTC
Permalink
没想到有这么多方法,真是远在天边,近在眼前,谢谢!
ps: 这个帖子不小心发错了位置,请跟另一帖,谢谢!

在 2010-07-04日的 06:46 +0800,阿暖写道:
Post by 阿暖
其实就是找到类 然后在后面加个括号()
Post by 阿暖
class A(object):pass
class B(object):pass
class C(object):pass
D=dict(A=A,B=B,C=C)
a=d['A']()
a=eval('A')()
a=globals()['A']()
还可以用元类把需要的类自动生成一个字典
D={}
D[name]=cls
__metaclass__=fact
print 'A'
print D
a=D['a']()
Post by 机械唯物主义 : linjunhalida
if name =='a': return ClassA()
elif name =='b': return classB()
else raise Exception("class name error")
Post by Devin
pass
pass
classname = 'Class'+name
classinstance = classname()
return classinstance
请问如何在python中实现类似java中Class.newInstance()的功能,可以按名字来
实例化不同的类
就如上面的py伪代码中那样,在调用fun函数时传入'A'或'B'就能生成ClassA或
ClassB的实例
--
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
来自: `python-cn`:CPyUG ~ 华蟒用户组 | 发言:python-***@googlegroups.com
退订: http://tinyurl.com/45a9tb //针对163/qq邮箱:http://tinyurl.com/4dg6hc
详情: https://groups.google.com/group/python-cn
严正: 理解列表! 智慧提问! http://wiki.woodpecker.org.c
ChopDown
2010-07-05 13:03:50 UTC
Permalink
ºÜŒòµ¥Âï, Èç¹ûÊÇÁíÒ»žömodule, ÇëÌæ»»µô__name__ :
abc = getattr(sys.modules[__name__], "ClassA")()
ûÏ뵜ÓÐÕâÃŽ¶à·œ·š£¬ÕæÊÇÔ¶ÔÚÌì±ß£¬œüÔÚÑÛÇ°£¬Ð»Ð»£¡
ps: ÕâžöÌû×Ó²»Ð¡ÐÄ·¢ŽíÁËλÖã¬ÇëžúÁíÒ»Ìû£¬Ð»Ð»£¡
ÔÚ 2010-07-04ÈÕµÄ 06:46 +0800£¬°¢Å¯ÐŽµÀ£º
ÆäʵŸÍÊÇÕÒµœÀà È»ºóÔÚºóÃæŒÓžöÀšºÅ()
Post by 阿暖
class A(object):pass
class B(object):pass
class C(object):pass
D=dict(A=A,B=B,C=C)
a=d['A']()
a=eval('A')()
a=globals()['A']()
»¹¿ÉÒÔÓÃÔªÀà°ÑÐèÒªµÄÀà×Ô¶¯Éú³ÉÒ»žö×Öµä
D={}
D[name]=cls
__metaclass__=fact
print 'A'
print D
a=D['a']()
Post by 机械唯物主义 : linjunhalida
if name =='a': return ClassA()
elif name =='b': return classB()
else raise Exception("class name error")
Post by Devin
pass
pass
classname = 'Class'+name
classinstance = classname()
return classinstance
ÇëÎÊÈçºÎÔÚpythonÖÐʵÏÖÀàËÆjavaÖÐClass.newInstance()µÄ¹ŠÄÜ£¬¿ÉÒÔ°ŽÃû×ÖÀŽ
ʵÀý»¯²»Í¬µÄÀà
ŸÍÈçÉÏÃæµÄpyαŽúÂëÖÐÄÇÑù£¬ÔÚµ÷ÓÃfunº¯ÊýʱŽ«Èë'A'»ò'B'ŸÍÄÜÉú³ÉClassA»ò
ClassBµÄʵÀý
--
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
--
ÀŽ×Ô: `python-cn`:CPyUG ~ »ªòþÓû§×é | ·¢ÑÔ:python-***@googlegroups.com
Í˶©: http://tinyurl.com/45a9tb //Õë¶Ô163/qqÓÊÏä:http://tinyurl.com/4dg6hc
ÏêÇé: https://groups.google.com/group/python-cn
ÑÏÕý: ÀíœâÁбí! ÖÇ»ÛÌáÎÊ! http://wiki.woodpecker.org.cn/moin/AskForHelp
Loading...