Объяснить Python .join ()

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

Я попробую:

  • Переменное назначение и модификация (в python)
  • Используя индекс для получения элемента, Python
  • Сортировка словаря в Python с использованием списка упорядоченных ключей
  • Сортировка списка списков в Python
  • В чем разница между `sorted (list)` vs `list.sort ()`? питон
  • Использовать endswith с несколькими расширениями
  •  strid = repr(595) print array.array('c', random.sample(string.ascii_letters, 20 - len(strid))) .tostring().join(strid) 

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

     5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5 

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

  • Изменение списка в python путем передачи его функции
  • Могу ли я включить один элемент в список без инструкции else в python?
  • Как я могу разделить эту строку с разделителями-запятыми в Python?
  • Удаление элемента из списка на основе предиката
  • Есть ли способ обходить Python list.append (), становясь все медленнее в цикле, когда список растет?
  • Как написать вывод списка в текстовый файл в Python
  • 5 Solutions collect form web for “Объяснить Python .join ()”

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

     5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5 ^ ^ ^ 

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

     >>> ",".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 

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

     "wlfgALGbXOahekxSs".join("595") 

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

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

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

     "5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5" 

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

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

    Например

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

    join соединяет строки вместе с разделителем. Сепаратор – это то, что вы размещаете прямо перед join . Например

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

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

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

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

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

     strid = repr(595) print ''.join([array.array('c', random.sample(string.ascii_letters, 20 - len(strid))) .tostring(), strid]) 
    Python - лучший язык программирования в мире.