Подтвердить что ты не робот

Что именно делает метод .join()?

Я новичок в Python и полностью смущен .join(), который я прочитал, является предпочтительным методом для конкатенации строк.

Я пробовал:

strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
    .tostring().join(strid)

и получил что-то вроде:

5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5

Почему это работает так? Не следует ли автоматически добавлять 595?

4b9b3361

Ответ 1

Посмотрите внимательно на свой результат:

5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
^                 ^                 ^

Я выделил "5", "9", "5" вашей исходной строки. Метод Python join() является строковым методом и принимает список вещей для объединения со строкой. Более простой пример может помочь объяснить:

>>> ",".join(["a", "b", "c"])
'a,b,c'

", вставлен между каждым элементом данного списка. В вашем случае ваш" список "представляет собой строковое представление" 595", которое рассматривается как список [ "5", "9", "5" ].

Кажется, что вы ищете + вместо этого:

print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid

Ответ 2

join принимает итеративную вещь как аргумент. Обычно это список. Проблема в вашем случае состоит в том, что строка сама по себе является итерируемой, выдавая каждый символ по очереди. Ваш код разбивается на это:

"wlfgALGbXOahekxSs".join("595")

который действует так же, как это:

"wlfgALGbXOahekxSs".join(["5", "9", "5"])

и поэтому создает вашу строку:

"5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5"

Строки как iterables - одна из самых запутанных проблем начала с Python.

Ответ 3

Чтобы добавить строку, просто соедините ее с знаком +.

например.

>>> a = "Hello, "
>>> b = "world"
>>> str = a + b
>>> print str
Hello, world

join связывает строки вместе с разделителем. Разделитель - это то, что вы место перед join. Например.

>>> "-".join([a,b])
'Hello, -world'

Соединение принимает список строк в качестве параметра.

Ответ 4

join() предназначен для объединения всех элементов списка. Для конкатенирования только двух строк "+" имеет смысл:

strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
    .tostring() + strid

Ответ 5

Чтобы увеличить немного больше того, что говорят другие, если вы хотите использовать объединение, чтобы просто объединить две строки, вы бы сделали следующее:

strid = repr(595)
print ''.join([array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
    .tostring(), strid])

Ответ 6

Существует хорошее объяснение того, почему это дорого использовать + для конкатенации большого количества строк здесь

Оператор Plus является прекрасным решением для объединения двух строк Python. Но если вы продолжите добавлять более двух строк (n> 25), вы можете подумать о другом.

''.join([a, b, c]) - это оптимизация производительности.

Ответ 7

Предоставляя это в качестве входных данных,

li = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
s = ";".join(li)
print(s)

Python возвращает это как вывод:

'server=mpilgrim;uid=sa;database=master;pwd=secret'

Ответ 8

list = ["my", "name", "is", "kourosh"]   
" ".join(list)

Если это ввод, используя метод JOIN, мы можем добавить расстояние между словами, а также преобразовать список в строку.

Это выход Python

'my name is kourosh'

Ответ 9

"".join может использоваться для копирования строки в списке в переменную

>>> myList = list("Hello World")
>>> myString = "".join(myList)
>>> print(myList)
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
>>> print(myString)
Hello World