相关疑难解决方法(0)

如何将列表拆分为大小均匀的块?

我有一个任意长度的列表,我需要将它分成相同大小的块并对其进行操作.有一些明显的方法可以做到这一点,比如保留一个计数器和两个列表,当第二个列表填满时,将它添加到第一个列表并清空下一轮数据的第二个列表,但这可能非常昂贵.

我想知道是否有人对任何长度的列表都有一个很好的解决方案,例如使用生成器.

我一直在寻找有用的东西,itertools但我找不到任何明显有用的东西.但是可能会错过它.

相关问题:在块中迭代列表的最"pythonic"方法是什么?

python split list chunks

2068
推荐指数
40
解决办法
84万
查看次数

每隔第n个字符拆分字符串?

是否有可能每隔第n个字符拆分一个python字符串?

例如,假设我有一个包含以下内容的字符串:

'1234567890'
Run Code Online (Sandbox Code Playgroud)

我怎么能让它看起来像这样:

['12','34','56','78','90']
Run Code Online (Sandbox Code Playgroud)

python string split

342
推荐指数
14
解决办法
30万
查看次数

python*运算符的专有名称?

运营商的正确名称是什么*,如function(*args)?解压缩,解压缩,其他什么?

python operators splat

200
推荐指数
6
解决办法
10万
查看次数

为什么x,y = zip(*zip(a,b))在Python中有效?

好的我喜欢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中其他令人惊叹的精彩内容是如此神秘且难以谷歌?

python zip

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

从IP字符串转换为整数,在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 networking ip-address

43
推荐指数
8
解决办法
6万
查看次数

将平面列表转换为python中的列表列表

通常情况下,你想要反过来,就像这里一样.我想知道你如何将一个平面列表转换为一个列表,在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 list

21
推荐指数
3
解决办法
2万
查看次数

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

如何从一行文字创建字典?

我有一个包含数千行的生成文件,如下所示:

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中使用标准模块进行此操作?

python parsing dictionary

8
推荐指数
2
解决办法
4145
查看次数

使用 OpenPose 计算视频中身体骨骼的角度

免责声明:这个问题是关于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)

python math openpose

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

使用 zip、* 和 *3 的组合同时迭代 3 个元素是如何工作的?

我尝试使用以下命令一次迭代 3 个元素(这似乎有效):

for a, b, c in zip(*[iter(accounts_iter)]*3):
    print(a)
    print(b)
    print(c)
Run Code Online (Sandbox Code Playgroud)
  1. accounts_iter是我创建的元组列表。
  2. iter(accounts_iter)解压accounts_iter成一个列表迭代器,所以它仍然是一个元组列表,只是它现在是可迭代的

这是我很难理解的地方。

  • *[iter(accounts_iter)]将列表解压Step 2成单独的元组,因此不再是元组列表,而是单个元组
  • *[iter(accounts_iter)]*3乘以 3

在我的输出中,我似乎没有重复项,但确实能够每个循环处理 3 个项目。

但是一旦发生,我不会拥有同一个元组的 3 个副本吗zip(*[iter(accounts_iter)]*3)

python iterator loops python-3.x

5
推荐指数
0
解决办法
716
查看次数