Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python中将列表中的元素连接到新列表_Python_List - Fatal编程技术网

在Python中将列表中的元素连接到新列表

在Python中将列表中的元素连接到新列表,python,list,Python,List,我看到了,但这对解决我的问题没有多大帮助 我有一个字符串列表,其中前12个项的长度为20字节(40个字符),第13个项的长度为19字节(38个字符),其余部分的长度为任意大小(我正在解码没有给定大小的音频记录) 输出: 0000000FFF77F7FFF2A1412F4B8058A891982070 F1885C08883C7A880018980B7A50E24AA8004E4C 5D38103F3C910810009941B91088F7D509008980 009980809F7C28008

我看到了,但这对解决我的问题没有多大帮助

我有一个字符串列表,其中前12个项的长度为20字节(40个字符),第13个项的长度为19字节(38个字符),其余部分的长度为任意大小(我正在解码没有给定大小的音频记录)

输出:

0000000FFF77F7FFF2A1412F4B8058A891982070
F1885C08883C7A880018980B7A50E24AA8004E4C
5D38103F3C910810009941B91088F7D509008980
009980809F7C28008880B7B935A88A0208118C3B
C251881F4C00B1408088A1398007F1980259C800
A108892278E879B383F04B0B50188191F1888189
A9608080980808080E7E40080989080018A860D3
F4C800001C7A100810C90B8302118980FC508923
B888D782BD8283B802902902A7CB589008802080
90097F3A8A061C81880B7B40A9249A008E022E6D
20B22D923E9690A80121AB97E4A8800013D5E5B8
490992228F02A14AC00A419990971B2888009988
8A2698289A70C00B039A3A74D2098AE7B18828
3F1C5201D3F1A000811081190988808080808008
0808800880080808800080008881880919880A10
现在,我想要一个新列表,其中每个元素包含13个数据包,即12*40+1*38=518个字符(259字节)


然后我被困在了如何处理列表中的其他部分。我怎样才能做到这一点

链接问题对您没有帮助的原因是,您的问题与“加入”列表无关,而是与列表分区有关。您只需要将列表划分为单独的列表,每个列表包含13个元素。有一些很好的解决方案。

据我所知,您有一个字符串列表,您需要一个新的字符串列表,其中每个字符串都有一个指定的块长度。一种简单的方法是
将列表连接成一个字符串,然后再次将其破解。演示:

>>> lst = ['hello', 'world', 'how', 'are', 'you?']
>>> mystr = ''.join(lst)
>>> chunk = 5
>>> newlst = [mystr[i:i+chunk] for i in range(0,len(mystr),chunk)]
>>> newlst
['hello', 'world', 'howar', 'eyou?']

将您的
区块
更改为518,您就可以出发了。如果我误解了您的说明,请留下评论。

我不完全确定我是否理解您的问题,但您要找的是这样的东西吗

blocks = ["".join(adpcm_packets[i:i+13]) for i in range(0, len(adpcm_packets), 13)]

最简单的事情是使用递归,这相对容易理解

def f(l):
    if l==[]: return []
    else: return [ ''.join(l[:13])  ] +  f( l[13:])  
Pythons处理列表的方式允许您不必担心
l[13:][/code>和
l[:13][/code>部分的
len(l)<13


注意,这可能是尾部递归的。不幸的是,我不确定在Python解释器中这是否是真正的尾部递归,但大多数现代编译器都能够自动为您做到这一点。在Python中,您必须调用自己的迭代器方法,对于这样一段简单的代码来说,这有点过分了

需要澄清的是:您有一个字符串列表,您想要一个字符串列表,其中每个字符串为518个字符,就好像您的字符串列表是一个长字符串一样?当您创建一个列表,其中每个元素包含13个数据包时,每个元素之间的差异是多少?你以不同的方式构建每个元素?@timgeb如果我最初的列表是这样的话。每个元素都是一个32ms的音频片段,这正是我所寻找的。谢谢大家!@威廉森:没问题:)
blocks = ["".join(adpcm_packets[i:i+13]) for i in range(0, len(adpcm_packets), 13)]
def f(l):
    if l==[]: return []
    else: return [ ''.join(l[:13])  ] +  f( l[13:])