小编mar*_*eau的帖子

Python格式timedelta到字符串

我是一个Python新手(2周),我在格式化datetime.timedelta对象时遇到了麻烦.

这是我正在尝试做的事情:我有一个对象列表,该对象类的一个成员是一个timedelta对象,显示事件的持续时间.我希望以小时:分钟的格式显示该持续时间.

我已经尝试了各种方法来做到这一点,我遇到了困难.我目前的方法是为我的对象添加方法,返回小时和分钟.我可以通过将timedelta.seconds除以3600并将其四舍五入来获得小时数.我无法获得余数秒并将其转换为分钟.

顺便说一句,我正在使用Google AppEngineDjango Templates进行演示.

如果有人可以帮助或知道更好的解决方法,我会非常高兴.

谢谢,

python string format datetime timedelta

246
推荐指数
19
解决办法
25万
查看次数

如何检查文件是否为空?

我有一个文本文件.
如何检查它是否为空?

python file file-length

246
推荐指数
7
解决办法
23万
查看次数

如何加载文件夹中的所有模块?

有人能为我提供一个导入整个模块目录的好方法吗?
我有这样的结构:

/Foo
    bar.py
    spam.py
    eggs.py
Run Code Online (Sandbox Code Playgroud)

我尝试通过添加__init__.py和执行将其转换为包,from Foo import *但它没有按照我希望的方式工作.

python python-import

245
推荐指数
13
解决办法
22万
查看次数

类方法的目的是什么?

我正在教自己Python,我最近的教训是Python不是Java,因此我花了一些时间将所有的Class方法转换为函数.

我现在意识到我不需要使用Class方法来处理staticJava中的方法,但现在我不确定何时使用它们.我能找到的关于Python类方法的所有建议都是像我这样的新手应该避开它们,而标准文档在讨论时最不透明.

有没有人有一个在Python中使用Class方法的好例子,或者至少可以有人告诉我什么时候可以明智地使用Class方法?

python class-method

244
推荐指数
13
解决办法
13万
查看次数

如何打印嵌套词典?

如何在Python中打印深度为~4的字典呢?我尝试使用漂亮的打印pprint(),但它不起作用:

import pprint 
pp = pprint.PrettyPrinter(indent=4)
pp.pprint(mydict)
Run Code Online (Sandbox Code Playgroud)

我只想"\t"为每个嵌套设置一个缩进(),这样我得到这样的东西:

key1
    value1
    value2
    key2
       value1
       value2
Run Code Online (Sandbox Code Playgroud)

等等

我怎样才能做到这一点?

python dictionary

244
推荐指数
13
解决办法
20万
查看次数

(lambda)函数闭包捕获了什么?

最近我开始玩Python,我遇到了一些特殊的闭包方式.请考虑以下代码:

adders=[0,1,2,3]

for i in [0,1,2,3]:
   adders[i]=lambda a: i+a

print adders[1](3)
Run Code Online (Sandbox Code Playgroud)

它构建了一个简单的函数数组,它接受单个输入并返回由数字添加的输入.函数在for循环中构造,迭代器i从中循环03.对于这些数字中的每一个,lambda都会创建一个函数i,该函数捕获并将其添加到函数的输入中.最后一行将第二个lambda函数3作为参数调用.令我惊讶的是输出结果是6.

我期待一个4.我的理由是:在Python中,一切都是一个对象,因此每个变量都是指向它的指针.在创建lambda闭包时i,我希望它存储一个指向当前指向的整数对象的指针i.这意味着当i分配一个新的整数对象时,它不应该影响先前创建的闭包.遗憾的是,adders在调试器中检查数组表明它确实存在.所有的lambda功能指的最后一个值i,3,这将导致adders[1](3)返回6.

这让我想知道以下内容:

  • 闭包捕获的内容是什么?
  • 什么是最优雅的方式来说服lambda函数以更改其值i时不会受到影响的方式捕获当前i值?

python lambda closures

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

找到多组交集的最佳方法是什么?

我有一套套装:

setlist = [s1,s2,s3...]
Run Code Online (Sandbox Code Playgroud)

我想要s1∩s2∩s3...

我可以通过执行一系列成对s1.intersection(s2)等来编写一个函数来完成它.

有推荐的,更好的或内置的方式吗?

python set set-intersection

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

如何通过两个循环列表?

可能重复:
以块的形式迭代列表的最"pythonic"方法是什么?

我想循环遍历Python列表并一次处理2个列表项.用另一种语言这样的东西:

for(int i = 0; i < list.length(); i+=2)
{
   // do something with list[i] and list[i + 1]
}
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳方法是什么?

python iteration loops for-loop list

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

为什么我需要'b'用Base64编码Python字符串?

在这个python示例之后,我将字符串编码为Base64,其中:

>>> import base64
>>> encoded = base64.b64encode(b'data to be encoded')
>>> encoded
b'ZGF0YSB0byBiZSBlbmNvZGVk'
Run Code Online (Sandbox Code Playgroud)

但是,如果我省略领先b:

>>> encoded = base64.b64encode('data to be encoded')
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python32\lib\base64.py", line 56, in b64encode
   raise TypeError("expected bytes, not %s" % s.__class__.__name__)
   TypeError: expected bytes, not str
Run Code Online (Sandbox Code Playgroud)

为什么是这样?

python base64 python-3.x

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

元素添加2个列表?

我现在有了:

list1 = [1, 2, 3]
list2 = [4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

我希望:

[1, 2, 3]
 +  +  +
[4, 5, 6]
|| || ||
[5, 7, 9]
Run Code Online (Sandbox Code Playgroud)

简单地添加两个列表的元素.

我肯定会迭代这两个列表,但我不想这样做.

什么是最Python的方式这样做的?

python list elementwise-operations

221
推荐指数
11
解决办法
23万
查看次数