Более удобный и эффективный способ разбить список - PullRequest
0 голосов
/ 09 июня 2019

есть более быстрый и эффективный способ разделения строк в списке.Моя текущая настройка не медленная, но занимает больше времени, чем я думаю, чтобы разделить весь список, возможно, из-за того, сколько итераций требуется, чтобы пройти весь список.

В настоящее время у меня есть код ниже

found_reader = pd.read_csv(file, delimiter='\n', engine='c')
loaded_list = found_reader    
for i in range(len(loaded_list)):
            loaded_email_list = loaded_email_list + [loaded_list[i].split(':')[0]]

Я просто хотел бы, чтобы метод сделал вышеупомянутое в самое быстрое, но эффективное время

1 Ответ

2 голосов
/ 09 июня 2019

Вот как вы делаете это эффективно, если и loaded_list, и loaded_email_list были обычными списками (может потребоваться небольшая адаптация к тому, что использует Панда):

loaded_email_list += [x.partition(':')[0] for x in loaded_list]

Почему это лучше:

  • Он выполняет итерации по списку напрямую, вместо использования range, len и индексной переменной
  • Он использует partition, который прекращает присматривать за первым : вместо split, который обходит всю строку
  • Он использует понимание списка для создания нового списка сразу, вместо создания и объединения группы одноэлементных списков
  • Он использует x += y вместо x = x + y, что теоретически может быть быстрее, если его __iadd__ более эффективен, чем присвоение результата __add__ обратно самому себе.
...