小编Lev*_*von的帖子

Python 3.x舍入行为

我刚刚重新阅读Python 3.0中的新功能,它指出:

round()函数舍入策略和返回类型已更改.确切的中途情况现在四舍五入到最接近的偶数结果而不是零.(例如,round(2.5)现在返回2而不是3.)

圆形文件:

对于支持round()的内置类型,值被舍入到10的最接近的倍数到幂减去n; 如果两个倍数相等,则向均匀选择进行舍入

所以,在v2.7.3下:

In [85]: round(2.5)
Out[85]: 3.0

In [86]: round(3.5)
Out[86]: 4.0
Run Code Online (Sandbox Code Playgroud)

正如我所料.但是,现在在v3.2.3下:

In [32]: round(2.5)
Out[32]: 2

In [33]: round(3.5)
Out[33]: 4
Run Code Online (Sandbox Code Playgroud)

这似乎是违反直觉的,与我对四舍五入的理解相反(并且必然会绊倒人).英语不是我的母语,但在我读到这篇文章之前,我以为我知道舍入的含义是什么: - /我确信在引入v3的时候一定有一些关于这个的讨论,但是我无法找到一个很好的理由我的搜索.

  1. 有没有人能够深入了解为什么会改变这种情况?
  2. 有没有其他主流编程语言(例如,C,C++,Java,Perl, ..)这样做(对我不一致)舍入?

我在这里错过了什么?

更新:@ Li-aungYip的评论"银行家的舍入"给了我正确的搜索词/搜索关键字,我发现了这个问题:为什么.NET使用银行家的舍入作为默认值?所以我会仔细阅读.

python rounding python-3.x

157
推荐指数
5
解决办法
5万
查看次数

在python中连接字符串和整数

在python中说你有

s = "string"
i = 0
print s+i
Run Code Online (Sandbox Code Playgroud)

会给你错误,所以你写

print s+str(i) 
Run Code Online (Sandbox Code Playgroud)

没有得到错误.

我认为这是处理int和字符串连接的一种笨拙的方式.甚至Java也不需要显式转换为String来进行这种连接.有没有更好的方法来进行这种连接,即没有Python中的显式转换?

python concatenation string-concatenation

127
推荐指数
6
解决办法
35万
查看次数

如何同时从列表中删除多个索引?

说我在这里有这个列表:

list = [a, b, c, d, e, f, g]
Run Code Online (Sandbox Code Playgroud)

我如何删除说索引2, 3, 4,5同时?

pop不接受多个值.我怎么做呢?

python

97
推荐指数
6
解决办法
11万
查看次数

EC2增大尺寸后无法调整音量大小

我已按照调整EC2卷大小的步骤进行操作

  1. 停止了实例
  2. 拍摄当前音量的快照
  3. 在上一个快照中创建了一个新卷,在同一区域中具有更大的大小
  4. 从实例中删除旧卷
  5. 将新卷附加到同一安装点的实例

旧卷为5GB,我创建的卷为100GB现在,当我重新启动实例并运行时df -h I仍然看到这个

Filesystem            Size  Used Avail Use% Mounted on
/dev/xvde1            4.7G  3.5G 1021M  78% /
tmpfs                 296M     0  296M   0% /dev/shm
Run Code Online (Sandbox Code Playgroud)

这是我跑步时得到的

sudo resize2fs /dev/xvde1

The filesystem is already 1247037 blocks long.  Nothing to do!
Run Code Online (Sandbox Code Playgroud)

如果我跑,cat /proc/partitions我明白了

 202       64  104857600 xvde
 202       65    4988151 xvde1
 202       66     249007 xvde2
Run Code Online (Sandbox Code Playgroud)

根据我的理解,如果我遵循正确的步骤xvde应该具有与xvde1相同的数据,但我不知道如何使用它

如何使用新卷或卸载xvde1并挂载xvde?

我无法理解我做错了什么

我也试过了 sudo ifs_growfs /dev/xvde1

xfs_growfs: /dev/xvde1 is not a mounted XFS filesystem
Run Code Online (Sandbox Code Playgroud)

顺便说一下,这是一个带有centos 6.2 x86_64的linux盒子

在此先感谢您的帮助

centos snapshot volume amazon-ec2 image-resizing

85
推荐指数
9
解决办法
7万
查看次数

使用PIL获取像素的RGB

是否可以使用PIL获得像素的RGB颜色?我正在使用此代码:

im = Image.open("image.gif")
pix = im.load()
print(pix[1,1])
Run Code Online (Sandbox Code Playgroud)

但是,它仅输出一个数字(例如01)而不是三个数字(例如,60,60,60对于R,G,B).我想我不了解这个功能.我喜欢一些解释.

非常感谢.

python rgb image pixel python-imaging-library

83
推荐指数
2
解决办法
16万
查看次数

使用.format()格式化具有字段宽度参数的列表

我最近(终于?)开始使用.format()并且有一个可能有点模糊的问题.

特定

res = ['Irene Adler', 35,  24.798]
Run Code Online (Sandbox Code Playgroud)

(1) print('{0[0]:10s} {0[1]:5d} {0[2]:.2f}'.format(res))
(2) print('{:{}s} {:{}d} {:{}f}'.format(res[0], 10, res[1], 5, res[2], .2))
Run Code Online (Sandbox Code Playgroud)

工作得很好,同时印刷:

Irene Adler    35 24.80
Irene Adler    35 24.80
Run Code Online (Sandbox Code Playgroud)

我不知道我可以像(1)那样处理清单.我之前看到过带有旧%格式的字段宽度参数(2).

我的问题是想要做这样的事情,它结合了(1)和(2):

(3) print('{0[0]:{}s} {0[1]:{}d} {0[2]:{}f}'.format(res, 10, 5, .2))
Run Code Online (Sandbox Code Playgroud)

但是,我无法做到这一点,我无法从文档中找出这是否可行.提供要打印的列表和宽度的参数会很好.

顺便说一句,我也试过这个(没有运气):

args = (10, 5, .2)
(4) print('{0[0]:{}s} {0[1]:{}d} {0[2]:{}f}'.format(res, args))
Run Code Online (Sandbox Code Playgroud)

在这两种情况下,我得到:

D:\Users\blabla\Desktop>python tmp.py
Traceback (most recent call last):
  File "tmp.py", line 27, in <module>
    print('{0[0]:{}s} {0[1]:{}d} {0[2]:{}f}'.format(res, 10, 5, .2))
ValueError: cannot switch from …
Run Code Online (Sandbox Code Playgroud)

python list string-formatting

47
推荐指数
1
解决办法
5万
查看次数

解压缩文件导致"BadZipFile:文件不是zip文件"

我有两个zip文件,它们都可以通过Windows资源管理器和7-zip打开.

然而,当我用Python的zipfile模块[zipfile.ZipFile("filex.zip")]打开它们时,其中一个打开但另一个给出错误" BadZipfile: File is not a zip file".

我确保后者是一个有效的Zip文件,用7-Zip打开并查看其属性(7Zip.ZIP说).当我用文本编辑器打开文件时,前两个字符是"PK",表明它确实是一个zip文件.

我正在使用Python 2.5,并且真的没有任何线索如何解决这个问题.我已经尝试过Windows和Ubuntu,并且两个平台都存在问题.

更新: Windows上的Python 2.5.4的回溯:

Traceback (most recent call last):
File "<module1>", line 5, in <module>
    zipfile.ZipFile("c:/temp/test.zip")
File "C:\Python25\lib\zipfile.py", line 346, in init
    self._GetContents()
File "C:\Python25\lib\zipfile.py", line 366, in _GetContents
    self._RealGetContents()
File "C:\Python25\lib\zipfile.py", line 378, in _RealGetContents
    raise BadZipfile, "File is not a zip file"
BadZipfile: File is not a zip file
Run Code Online (Sandbox Code Playgroud)

基本上,当_EndRecData调用函数从中央目录结束"记录中获取数据时,注释长度检出失败[endrec [7] == len(comment)].

函数中locals的值_EndRecData如下:

 END_BLOCK: 4096,
 comment: '\x00',
 data: '\xd6\xf6\x03\x00\x88,N8?<e\xf0q\xa8\x1cwK\x87\x0c(\x82a\xee\xc61N\'1qN\x0b\x16K-\x9d\xd57w\x0f\xa31n\xf3dN\x9e\xb1s\xffu\xd1\.....', (truncated)
 endrec: …
Run Code Online (Sandbox Code Playgroud)

python zipfile

37
推荐指数
4
解决办法
6万
查看次数

将Numpy数组"转换"为Matlab,反之亦然

我正在寻找一种方法将NumPy数组传递给Matlab.

我已经设法通过使用数组将数组存储到图像中scipy.misc.imsave然后使用它来加载它imread,但这当然会导致矩阵包含0到256之间的值而不是"实际"值.

将此矩阵的乘积除以256,并且原始NumPy数组中的最大值给出了正确的矩阵,但我觉得这有点单调乏味.

有更简单的方法吗?

python matlab numpy

34
推荐指数
3
解决办法
5万
查看次数

无效的命令"Order",可能由服务器配置中未包含的模块拼写错误或定义失败

当我尝试启动或重新启动我的apache服务器时,我得到以下消息:

Syntax error on line 162 of /etc/apache2/apache2.conf:
Invalid command 'Order', perhaps misspelled or defined by a module not included in the server configuration
Action 'configtest' failed.
The Apache error log may have more information.
 failed!
Run Code Online (Sandbox Code Playgroud)

我尝试在谷歌上找到此错误并修复它:

http://linuxindetails.wordpress.com/2009/12/02/invalid-command-order-perhaps-misspelled-or-defined-by-a-module-not-included-in-the-server-configuration-failed/

我收到错误: Module authz_host does not exist!

那么,有些身体帮我解决了吗?

谢谢 !

linux apache

33
推荐指数
4
解决办法
7万
查看次数

平均列表python

我有一个列表列表:类似于:

data = [[240, 240, 239],
        [250, 249, 237], 
        [242, 239, 237],
        [240, 234, 233]]
Run Code Online (Sandbox Code Playgroud)

我希望将其平均化

[average_column_1, average_column_2, average_column_3]
Run Code Online (Sandbox Code Playgroud)

我的代码就像不太优雅.这是通过列表的天真方式,将总和保持在单独的容器中,然后除以元素的数量.

我认为有一种pythonic方式来做到这一点.有什么建议?谢谢

python

28
推荐指数
4
解决办法
3万
查看次数