I'm pretty new to Python and am completely confused by .join()
which I have read is the preferred method for concatenating strings.
I tried:
strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring().join(strid)
and got something like:
5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
Why does it work like this? Shouldn't the 595
just be automatically appended?
list = ["my", "name", "is", "kourosh"]
" ".join(list)
If this is an input, using the JOIN method, we can add the distance between the words and also convert the list to the string.
This is Python output
'my name is kourosh'
join() is for concatenating all list elements. For concatenating just two strings "+" would make more sense:
strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid
To append a string, just concatenate it with the +
sign.
E.g.
>>> a = "Hello, "
>>> b = "world"
>>> str = a + b
>>> print str
Hello, world
join
connects strings together with a separator. The separator is what you
place right before the join
. E.g.
>>> "-".join([a,b])
'Hello, -world'
Join takes a list of strings as a parameter.
join
takes an iterable thing as an argument. Usually it's a list. The problem in your case is that a string is itself iterable, giving out each character in turn. Your code breaks down to this:
"wlfgALGbXOahekxSs".join("595")
which acts the same as this:
"wlfgALGbXOahekxSs".join(["5", "9", "5"])
and so produces your string:
"5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5"
Strings as iterables is one of the most confusing beginning issues with Python.
To expand a bit more on what others are saying, if you wanted to use join to simply concatenate your two strings, you would do this:
strid = repr(595)
print ''.join([array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring(), strid])
There is a good explanation of why it is costly to use +
for concatenating a large number of strings here
Plus operator is perfectly fine solution to concatenate two Python strings. But if you keep adding more than two strings (n > 25) , you might want to think something else.
''.join([a, b, c])
trick is a performance optimization.
On providing this as input ,
li = ['server=mpilgrim', 'uid=sa', 'database=master', 'pwd=secret']
s = ";".join(li)
print(s)
Python returns this as output :
'server=mpilgrim;uid=sa;database=master;pwd=secret'
"".join may be used to copy the string in a list to a variable
>>> myList = list("Hello World")
>>> myString = "".join(myList)
>>> print(myList)
['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
>>> print(myString)
Hello World
Source: Stackoverflow.com