Как добавить постоянную строку в каждом элементе списка в Python? - PullRequest
0 голосов
/ 19 сентября 2018

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

Моя цель - создать список, значения которого должны быть "unknown contact number 0", "unknown contact number 1","unknown contact number 2"..."unknown contact number n". здесь unknown contact number - мой префикс.Я хочу добавить этот элемент в свой список.

Пока я пробовал это,

x=pd.DataFrame(index=range(val))
print ('unknown contact number '+x.index.astype(str)).values.tolist()

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

Заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Вы можете попробовать использовать карту с лямбда-функцией, если вы хотите избежать циклов любой ценой.

list_ = map(lambda x : 'unknown contact number' + x, df.index.astype(str).values.tolist())

Если вы используете Python 3, то преимущество карты в том, что она ленива.Хотя использование карты с лямбда-функцией будет немного медленнее, чем понимание списка, но если у вас есть пользовательская функция, вы всегда можете использовать ее с картой.

0 голосов
/ 19 сентября 2018

Если важна производительность, используйте f-string с, потому что текстовые функции в пандах медленные:

a = [f'unknown contact number {i}' for i in range(N)]

Времена :

N = 10000

In [31]: %timeit ('unknown contact number ' + pd.Series(np.arange(N)).astype(str)).tolist()
6.63 ms ± 708 µs per loop (mean ± std. dev. of 7 runs, 100 loops each)

In [32]: %timeit [f'unknown contact number {i}' for i in range(N)]
317 µs ± 3.61 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...