0

私は次の配列を持っています:

filename,number of times to show it

例:

video1.mp4,50
video2.mp4,100
video3.mp4,50
video4.mp4,150

次のようなプレイリスト ファイルを作成する最良の方法は何ですか。

video4
video2
video4
video1
video2
video3
video4

たぶん次のようになります:

max show_times 変数を取り、これは表示ブロックの数であり、各ブロックを次のようにします。

video_files_list = ((ファイル1,50),(ファイル2,100),(ファイル3,300))

プレイリスト = []

for i =0 to max_show_times: // max_show_times = 300

video_files_list の k の場合:

  if i % (max_show_times/(max_show_times/k[1])) ==0:  

// k[1] - file1 の場合は 50、file2 の場合は 100

         playlist.add(k[0])
4

1 に答える 1

0

あなたのアルゴリズムはそのような方法で実装できます

from itertools import imap

def generate_playlist(pairs):
  '''
  @param pairs: list of pairs, first element is a file name, second - repetition amount
  @return: generator for playlist items
  '''
  max_show_times = max(imap(second, pairs))
  for i in xrange(max_show_times):
    for file_path, repetition_count in pairs:
      if i % (max_show_times / repetition_count) == 0:  
           yield file_path

def second(col):
  if col and len(col) > 1:
    return col[1]

playlist = generate_playlist(file_to_count_pairs)
playlist = imap(get_file_name_without_ext, playlist)
于 2013-08-02T11:24:22.310 に答える