【发布时间】:2013-05-09 23:50:19
【问题描述】:
正如标题所说,我正在处理一些命令行选项以根据用户输入创建list,如下所示:"3,28,2"。这是我到目前为止得到的:
>>> rR = "3,28,2"
>>> rR = re.split(r"[\W]+", rR)
>>> map(int, xrange( int(rR[0]),int(rR[1]),int(rR[2]) ))
[3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23, 25, 27]
>>>
仅供参考,re.split() 是因为允许用户同时使用逗号 (,) 或空格或两者作为分隔符。
我的问题是如何“自动化”xrange(object) 位,以便用户输入可以有或没有起始值和步长值(即“3,28,2”与“ 3,28" 与 "28")。 len(rR) 确实告诉我输入中的元素数量,但我有点迷失了如何使用该信息动态编写 xrange/range 部分。
有什么想法吗?还试图使我的代码尽可能高效。因此,对此的任何建议将不胜感激。干杯!!
【问题讨论】:
-
我不明白你为什么将
int申请到xrange。独立于你的问题,你为什么不写range(int(rR[0]),int(rR[1]),int(rR[2]))? -
@GuillaumeLemaître 我也不明白,
xrange在您需要将其全部转换为列表时没有用 -
我猜他用
xrange做别的事,但用map(int在这里显示结果,虽然list()会更清楚 -
@GuillaumeLemaître:列表中有数百万个数字,我不想将整个列表加载到内存中,因此使用 xrange。这只是原始脚本的剪切粘贴,向你们展示我所追求的。但指出。谢谢!