我os.scandir用于获取文件夹中的文件列表:
img_list2 = os.scandir('/home/shared/test')
Run Code Online (Sandbox Code Playgroud)
我想获得第一个元素。
我在尝试 img_list2.next()
>>> img_list2.next()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: 'posix.ScandirIterator' object has no attribute 'next'
Run Code Online (Sandbox Code Playgroud)
所以我试过:
>>> filt = list(img_list2)
>>> type(filt)
<class 'list'>
>>> globals()['filt']
[<DirEntry 'panaroma00010.jpg'>, <DirEntry 'panaroma00014.jpg'>, <DirEntry 'panaroma00004.jpg'>, <DirEntry 'panaroma00013.jpg'>, <DirEntry 'panaroma00007.jpg'>, <DirEntry 'panaroma00011.jpg'>, <DirEntry 'panaroma00012.jpg'>, <DirEntry 'panaroma00006.jpg'>, <DirEntry 'panaroma00009.jpg'>, <DirEntry 'panaroma00001.jpg'>, <DirEntry 'panaroma00003.jpg'>, <DirEntry 'panaroma00005.jpg'>, <DirEntry 'panaroma00002.jpg'>, <DirEntry 'panaroma00008.jpg'>]
>>> filt[1]
<DirEntry 'panaroma00014.jpg'>
>>>
Run Code Online (Sandbox Code Playgroud)
所以就像在列表中我们可以获得第一个元素值,我们可以从os.scandir?
我正在尝试实现一个代表(几何)圆的类的最简单的例子,并且可以打印自己的数据.
Circle是一个有两个变量的类,self.radius和self.area.唯一的要求是,当更改一个变量时,另一个变量也会发生变化.
最简单的方法是什么?是property装饰品吗?
这是我的尝试.
import math
class Circle:
def __init__(self, radius=1):
self._radius = radius
self._area = math.pi * radius**2
@property
def radius(self):
return self._radius
@radius.setter
def radius(self, radius):
self._radius = radius
self._area = math.pi * radius**2
@property
def area(self):
return self._area
@area.setter
def area(self, area):
self._area = area
self._radius = math.sqrt(area / math.pi)
def __repr__(self):
return 'radius {:.2f} area {:.2f}'.format(self._radius, self._area)
c = Circle()
print(c)
c.radius = 110
print(c)
c.area = 3
print(c) …Run Code Online (Sandbox Code Playgroud) 在Python 2,我可以重新定义的任何数量与所述ctypes模块,例如数2以3:
import ctypes
value = 2
ob_ival_offset = ctypes.sizeof(ctypes.c_size_t) + ctypes.sizeof(ctypes.c_voidp)
ob_ival = ctypes.c_int.from_address(id(value)+ob_ival_offset)
ob_ival.value = 3
print 1+1
Run Code Online (Sandbox Code Playgroud)
我应该什么时候需要这样做?
我有很多类类型(源自type)。当我打印它们时,我得到类似的东西:
...
<class 'Default.new_templates.NewSnippetCommand'>
<class 'Default.new_templates.NewSyntaxCommand'>
<class 'Default.pane.ClosePaneCommand'>
<class 'Default.pane.FocusNeighboringGroup'>
<class 'Default.pane.MoveToNeighboringGroup'>
<class 'Default.pane.NewPaneCommand'>
<class 'Default.pane.SetMaxColumns'>
...
Run Code Online (Sandbox Code Playgroud)
我想打印:
...
NewSnippetCommand
NewSyntaxCommand
ClosePaneCommand
FocusNeighboringGroup
MoveToNeighboringGroup
NewPaneCommand
SetMaxColumns
...
Run Code Online (Sandbox Code Playgroud)
如何获取类名部分并省略模块部分?
url = 'https://www.shanbay.com/read/article/97936/'
temp = filter(str.isdigit,url) #slect numbers
Run Code Online (Sandbox Code Playgroud)
除了使用for...in expression,我temp可以str直接转换为吗?
因此,之前已多次询问有关for循环速度与while循环速度的问题.for循环应该更快.
但是,当我在Python 3.5.1中测试它时,结果如下:
timeit.timeit('for i in range(10000): True', number=10000)
>>> 12.697646026868842
timeit.timeit('while i<10000: True; i+=1',setup='i=0', number=10000)
>>> 0.0032265179766799434
Run Code Online (Sandbox Code Playgroud)
while循环运行速度比for循环快3000倍!我也试过为for循环预生成一个列表:
timeit.timeit('for i in lis: True',setup='lis = [x for x in range(10000)]', number=10000)
>>> 3.638794646750142
timeit.timeit('while i<10000: True; i+=1',setup='i=0', number=10000)
>>> 0.0032454974941904524
Run Code Online (Sandbox Code Playgroud)
这使得for循环速度提高了3倍,但差异仍然是3个数量级.
为什么会这样?
为什么这个语句会删除'E'in 'PIPELINE':
In: 'PIPELINE_DEV'.rstrip('_DEV')
Out: 'PIPELIN'
Run Code Online (Sandbox Code Playgroud)
但是这个声明没有删除'S':
In: 'PIPELINES_DEV'.rstrip('_DEV')
Out: 'PIPELINES'
Run Code Online (Sandbox Code Playgroud)
该声明最后删除了所有的E:
In: 'PIPELINEEEEEEEE_DEV'.rstrip('_DEV')
Out: 'PIPELIN'
Run Code Online (Sandbox Code Playgroud)
当我将rstrip转换为2个单独的语句时,它可以正常工作:
In: 'PIPELINE_DEV'.rstrip('DEV').rstrip('_')
Out: 'PIPELINE'
Run Code Online (Sandbox Code Playgroud) Python 允许使用逗号作为分隔值返回多个结果。
在开发用C语言编写的CPython扩展时,是否有可能获得相同的结果?如何?
我正在开发一个 CPython 扩展来替换现有的 Python 代码来对性能进行一些测试,我更喜欢使用相同的界面来不更改现有的代码库。
我正在使用 Python 3.6。
在这里看到这么多关于这个问题的例子,但是不能理清我的例子.
任何sugegstion将是欣赏,已经有他的recursiona dd无法修复它的headdake.
tree = {}
def populate_node(account):
node = '%(LOGIN)s,%(server_id)s' % account
tree[node]['login'] = account['LOGIN']
tree[node]['email'] = account['EMAIL'].lower()
tree[node]['server_id'] = account['server_id']
for account in accounts:
node = '%(LOGIN)s,%(server_id)s' % account
parent = None
if account['AGENT_ACCOUNT']:
parent = '%(AGENT_ACCOUNT)s,%(server_id)s' % account
if node not in tree:
tree[node] = {}
populate_node(account)
if parent:
tree[node]['parent'] = parent
if parent not in tree:
tree[parent] = {
'login': parent,
'server_id': account['server_id'],
'children': [node],
}
else:
if 'children' not in tree[parent]:
tree[parent]['children'] = [node]
else: …Run Code Online (Sandbox Code Playgroud) python ×10
python-3.x ×8
c ×1
class ×1
cpython ×1
ctypes ×1
loops ×1
performance ×1
python-2.7 ×1
python-3.5 ×1
recursion ×1
string ×1