python - 如何从文件名列表中收集文件名,将文件的每个长度分成 n 秒部分 - leetcode 之类的问题
问题描述
给定一个文件名列表及其相应的文件长度:(文件是音频数据列表,并且在秒数上有所不同,因此大小不同)
例如
filename_and_len = [["file1", 6], ["file2, 4], ["file3", 9], ["file4", 7]]
n 是您希望将每个剪辑分割成的所需秒数,因此我们输出每个 n 秒剪辑的文件名列表,例如当 n=5 时:
["file1", "file1_file2", "file3", "file3_file4", "file4"]
假设 n 已经是一个可以被文件中的总秒数整除的数字。
以下是我到目前为止的代码:
filename_and_len = [["file1", 6], ["file2", 4], ["file3", 9], ["file4", 7]]
n_temp = n
final_file_names = []
while n_temp < n:
for i in range(len(filename_and_len)):
if filename_and_len[i][1] > n:
final_file_names[i] = filename_and_len[i][0]
n_temp = n_temp + n
elif filename_and_len[i][1] < n:
final_file_names[i] = filename_and_len[i][0]
i++
我还没有完成这段代码,但我想知道这是否是正确的方向?
解决方案
import itertools as it
filename_and_len = [["file1", 6], ["file2", 4], ["file3", 9], ["file4", 7]]
filenames, lengths = zip(*filename_and_len)
# Get two iterables of the `filenames` variable
nameiters = it.tee(filenames, 2)
# Advance the second iterator one position
next(nameiters[1])
# Zip up the iterators and join element together with an "_" character
namejoins = map("_".join, zip(*nameiters)))
# Now zip the filenames into the joined names and flatten with a chain
chained = it.chain(*zip(filenames, namejoins))
# Now slice N from the chain
sliced = it.islice(chained, N)
# Collect into a `list` and print.
print(list(sliced))
推荐阅读
- spring - 2个不同的读者在同一步骤中填写一个项目
- sql - SQL - 在两个表上查找唯一值
- firebase - React native - 即使输入的凭据正确,firebase 身份验证也不起作用
- python - 使用 pandas 数据框修改 csv 中的数据
- python - Python:自然语言处理 (NLP)
- python - SQLAlchemy / Flask - 获取关系表中的行数
- java - 多线程 spark sql 作业总是失败
- python - 我想使用 python boto3 脚本将数据加载到 Amazon Redshift 集群中
- python - 什么时候列表不是列表?
- angular - 为什么 routing.module 文件中的守卫会阻止所有路由?