我有一个任意长度的列表,我需要将它分成相同大小的块并对其进行操作.有一些明显的方法可以做到这一点,比如保留一个计数器和两个列表,当第二个列表填满时,将它添加到第一个列表并清空下一轮数据的第二个列表,但这可能非常昂贵.
我想知道是否有人对任何长度的列表都有一个很好的解决方案,例如使用生成器.
我一直在寻找有用的东西,itertools
但我找不到任何明显有用的东西.但是可能会错过它.
是否有可能每隔第n个字符拆分一个python字符串?
例如,假设我有一个包含以下内容的字符串:
'1234567890'
Run Code Online (Sandbox Code Playgroud)
我怎么能让它看起来像这样:
['12','34','56','78','90']
Run Code Online (Sandbox Code Playgroud) 运营商的正确名称是什么*
,如function(*args)
?解压缩,解压缩,其他什么?
好的我喜欢Python的zip()
功能.一直使用它,它很棒.现在每一次我想要做的相反zip()
,认为"我以前就知道该怎么做",然后谷歌蟒蛇解压缩,然后记住一个使用这个神奇的*
解压缩元组的压缩列表.像这样:
x = [1,2,3]
y = [4,5,6]
zipped = zip(x,y)
unzipped_x, unzipped_y = zip(*zipped)
unzipped_x
Out[30]: (1, 2, 3)
unzipped_y
Out[31]: (4, 5, 6)
Run Code Online (Sandbox Code Playgroud)
到底是怎么回事?那个神奇的星号在做什么?还有什么地方可以应用,Python中其他令人惊叹的精彩内容是如此神秘且难以谷歌?
我的脚本有一点问题,我需要将表单'xxx.xxx.xxx.xxx'中的ip转换为整数表示,然后从此表单返回.
def iptoint(ip):
return int(socket.inet_aton(ip).encode('hex'),16)
def inttoip(ip):
return socket.inet_ntoa(hex(ip)[2:].decode('hex'))
In [65]: inttoip(iptoint('192.168.1.1'))
Out[65]: '192.168.1.1'
In [66]: inttoip(iptoint('4.1.75.131'))
---------------------------------------------------------------------------
error Traceback (most recent call last)
/home/thc/<ipython console> in <module>()
/home/thc/<ipython console> in inttoip(ip)
error: packed IP wrong length for inet_ntoa`
Run Code Online (Sandbox Code Playgroud)
有谁知道如何解决这个问题?
通常情况下,你想要反过来,就像这里一样.我想知道你如何将一个平面列表转换为一个列表,在python中的quasy重塑数组
在numpy你可以做类似的事情:
>>> a=numpy.arange(9)
>>> a.reshape(3,3)
>>> a
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
Run Code Online (Sandbox Code Playgroud)
我想知道你是如何做相反的事情,我通常的解决方案是这样的:
>>> Mylist
['a', 'b', 'c', 'd', 'e', 'f']
>>> newList = []
for i in range(0,len(Mylist),2):
... newList.append(Mylist[i], Mylist[i+1])
>>> newList
[['a', 'b'], ['c', 'd'], ['e', 'f']]
Run Code Online (Sandbox Code Playgroud)
是否有更"Pythonic"的方式来做到这一点?
可能重复:
如何在Python中将列表拆分为大小均匀的块?
python:将"5,4,2,4,1,0"转换为[[5,4],[2,4],[1,0]]
[1,2,3,4,5,6,7,8,9]
Run Code Online (Sandbox Code Playgroud)
- >
[[1,2,3],[4,5,6],[7,8,9]]
Run Code Online (Sandbox Code Playgroud)
是否有简单的方法来做到这一点,没有明确的'for'?
我有一个包含数千行的生成文件,如下所示:
CODE,XXX,DATE,20101201,TIME,070400,CONDITION_CODES,LTXT,PRICE,999.0000,QUANTITY,100,TSN,1510000001
某些行具有更多字段而其他行具有更少字段,但所有行都遵循相同的键值对模式,并且每行具有TSN字段.
在对文件进行一些分析时,我写了一个像下面这样的循环来将文件读入字典:
#!/usr/bin/env python
from sys import argv
records = {}
for line in open(argv[1]):
fields = line.strip().split(',')
record = dict(zip(fields[::2], fields[1::2]))
records[record['TSN']] = record
print 'Found %d records in the file.' % len(records)
Run Code Online (Sandbox Code Playgroud)
...这很好,完全符合我的要求(这print
只是一个简单的例子).
但是,对我来说它并没有感觉特别"pythonic"和以下行:
dict(zip(fields[::2], fields[1::2]))
Run Code Online (Sandbox Code Playgroud)
这只是感觉"笨重"(它在田野上迭代了多少次?).
是否有更好的方法在Python 2.6中使用标准模块进行此操作?
免责声明:这个问题是关于OpenPose 的,但这里的关键实际上是弄清楚如何使用输出(存储在 JSON 中的坐标)而不是如何使用 OpenPose,所以请考虑读到底。
我有一段视频,内容是一个人骑自行车的侧面(他坐着的侧面影像,这样我们就可以看到右侧)。我使用 OpenPose 来提取骨架的坐标。OpenPose 提供 JSON 文件中的坐标,如下所示(请参阅文档以获取解释):
{
"version": 1.3,
"people": [
{
"person_id": [
-1
],
"pose_keypoints_2d": [
594.071,
214.017,
0.917187,
523.639,
216.025,
0.797579,
519.661,
212.063,
0.856948,
539.251,
294.394,
0.873084,
619.546,
304.215,
0.897219,
531.424,
221.854,
0.694434,
550.986,
310.036,
0.787151,
625.477,
339.436,
0.845077,
423.656,
319.878,
0.660646,
404.111,
321.807,
0.650697,
484.434,
437.41,
0.85125,
404.13,
556.854,
0.791542,
443.261,
319.801,
0.601241,
541.241,
370.793,
0.921286,
502.02,
494.141,
0.799306,
592.138,
198.429,
0.943879,
0,
0,
0,
562.742,
182.698, …
Run Code Online (Sandbox Code Playgroud) 我尝试使用以下命令一次迭代 3 个元素(这似乎有效):
for a, b, c in zip(*[iter(accounts_iter)]*3):
print(a)
print(b)
print(c)
Run Code Online (Sandbox Code Playgroud)
accounts_iter
是我创建的元组列表。iter(accounts_iter)
解压accounts_iter
成一个列表迭代器,所以它仍然是一个元组列表,只是它现在是可迭代的这是我很难理解的地方。
*[iter(accounts_iter)]
将列表解压Step 2
成单独的元组,因此不再是元组列表,而是单个元组*[iter(accounts_iter)]*3
乘以 3在我的输出中,我似乎没有重复项,但确实能够每个循环处理 3 个项目。
但是一旦发生,我不会拥有同一个元组的 3 个副本吗zip(*[iter(accounts_iter)]*3)
?
python ×10
list ×3
split ×2
chunks ×1
dictionary ×1
ip-address ×1
iterator ×1
loops ×1
math ×1
networking ×1
openpose ×1
operators ×1
parsing ×1
python-3.x ×1
splat ×1
string ×1
zip ×1