我试图在Python 2.6.1中使用逗号作为千位分隔符打印一个整数.例如,我想将数字显示1234567为1,234,567.我该怎么做呢?我在Google上看过很多例子,但我正在寻找最简单实用的方法.
它不需要特定于语言环境来决定句点和逗号.我希望尽可能简单的事情.
问题出在Python 2.6上,这就是我们在生产中所拥有的.
我有这个要求用逗号格式化数字(如1234567.0987或1234567.0),以及小数点后指定的位数.因此,如果精度为3,则1234567.0987可能看起来像1,234,567.099.
我尝试使用Locale,正如许多问题的答案所示,问题是小数点后产生两位数,这对我的要求是不可接受的.
我尝试在其他地方搜索,但没有找到任何解决方案,最后我自己创建了一个方法:
def format_float(value, precision = 4):
formatString = "%0." + str(precision) + "f"
str_val = formatString % value
first, second = str_val.split('.')
first = int(first)
group = []
while True:
result, mod = first / 1000, first % 1000
group.append(str(mod))
if result == 0:
break
first = result
group.reverse()
return ','.join(group) + '.' + second
Run Code Online (Sandbox Code Playgroud)
我试图运行一些测试来测试该方法,它工作正常:
# default 4 digits precision
assert format_float(1234567890.0876543) == '1,234,567,890.0877'
assert format_float(1.2) == '1.2000'
assert format_float(1234) == '1,234.0000'
assert format_float(0) == …Run Code Online (Sandbox Code Playgroud) 在Python中,使用某个种子生成一些随机数但不重新设置全局状态的最佳方法是什么?在Java中,您可以简单地写:
Random r = new Random(seed);
r.nextDouble();
Run Code Online (Sandbox Code Playgroud)
并且标准Math.random()不会受到影响.在Python中,我能看到的最佳解决方案是:
old_state = random.getstate()
random.seed(seed)
random.random()
random.setstate(old_state)
Run Code Online (Sandbox Code Playgroud)
这是惯用的Python吗?它似乎不如Java解决方案那么干净,不需要"恢复"旧种子.我很想知道是否有更好的方法来做到这一点.
a = [3,5,8,3,9,5,0,3,2,7,5,4]
for o in a[::3]:
print o
Run Code Online (Sandbox Code Playgroud)
这让我得到了第一个和每3个项目.3,3,0,7
有没有办法可以检索下两个项目?
a = [3,5,8,3,9,5,0,3,2,7,5,4]
for o in a[::3]:
if o == 0:
print o
print o + 1
print o + 2
Run Code Online (Sandbox Code Playgroud)
输出0 3 2
我知道这不正确,但也许你可以看到我想要做的事情.基本上,我有一长串属性,每个属性有三个部分,parent_id,property_type和property_value,我需要从列表中检索属性的所有三个部分.