小编pyI*_*Sky的帖子

为什么上下文在with语句后会出现?

我想知道为什么使用with语句或块中打开的文件对象在退出后仍在范围内.正在<closed file>对象曾经清理?

>>> with open('test.txt','w') as f:
...     f.write('test')
...
>>> f
<closed file 'test.txt', mode 'w' at 0x00E014F0>
>>> f.close()


>>> if True:
...     fal = open('demo.txt','w')
...     fal.write('stuff')
...     fal.close()
...
>>> fal
<closed file 'demo.txt', mode 'w' at 0x00E015A0>
Run Code Online (Sandbox Code Playgroud)

python file-io

8
推荐指数
1
解决办法
307
查看次数

Python'with'语句 - 如何判断哪些模块/对象/类支持它?

Raymond Hettinger在展示幻灯片36和37时惊讶了不少人.https://speakerdeck.com/pyconslides/transforming-code-into-beautiful-idiomatic-python-by-raymond-hettinger-很多人都知道语句可以用于打开文件,但不能用于这些新事物.关于线程的python 3.3文档,仅在最底层,第16.2.8节,甚至提到它.从讲座中可以看出,使用"with"运算符是最佳实践.

  • 一个人应该如何判断是否支持'with',它可以绑定什么等等?
  • 另外,应该如何"提及"?(使用语句进行线程处理,使用语句进行python线程锁定,...),搜索的白话是什么,看看是否支持'with'(我们可以询问某些内容是否可迭代,我们是否可以询问它是否'可见')?

参考:

python

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

如何按范围对列表元素进行分组/计数

如果我的x列表和y列表是:

x = [10,20,30]
y = [1,2,3,15,22,27]
Run Code Online (Sandbox Code Playgroud)

我希望返回值是一个字典,其中包含的元素数小于x值:

{
    10:3,
    20:1,
    30:2,
}
Run Code Online (Sandbox Code Playgroud)

我有一个非常大的列表,所以我希望有一个更好的方法来做这个不涉及缓慢的嵌套for循环.我看过集合.Counter和itertools似乎都没有提供分组方式.有没有可以做到这一点的内置?

python dictionary list

4
推荐指数
2
解决办法
817
查看次数

使用不可迭代的列表元素将列表列表分解为单个列表

参考: python分解 列表在Python 中展平浅层列表

虽然上面提到的解决方案很有帮助,但我的问题略有不同,我想知道是否有一种pythonic方法来解决它.

a = [['a-3','b-3'],'r',['j']]
Run Code Online (Sandbox Code Playgroud)

我想要的是一种让'a'等于以下的简洁方法:

a = ['a-3','b-3','r','j']
Run Code Online (Sandbox Code Playgroud)

我被困在使用python 2.4所以2.4兼容的pythonic解决方案会很棒,但我仍然会发现2.7个以上的例子也很有趣.

主要的问题是,有非迭代的元件,否则该总和(LST,[])工作得很好,因为确实为2.7+链方法

python

1
推荐指数
1
解决办法
1073
查看次数

标签 统计

python ×4

dictionary ×1

file-io ×1

list ×1