2013-11-21 2 views
2

Например, у меня есть массив из двух элементов array = ['abc', 'def']. Как распечатать весь массив только с одной функцией. print "%s and %s" % array Возможно ли это? У меня есть предопределенное количество элементов, поэтому я знаю, сколько элементов будет там.Печатный массив Python в одной функции печати

EDIT:

творю оператор SQL для вставки, так что будет много полномочий, скажем, 7, и в моем примере это будет выглядеть следующим образом:

("insert into users values(%s, \'%s\', ...);" % array) 

ответ

7

вы также можете сделать

print '{0} and {1}'.format(arr[0],arr[1]) 

или в случае

print "insert into users values({0}, {1}, {2}, ...);".format(arr[0],arr[1],arr[2]...) 

или

print "insert into users values({0}, {1}, {2}, ...);".format(*arr) 

счастливым? убедитесь, что длина массива соответствует индекс ..

+0

Это что-то более вероятно, что я ищу, но если можно просто положить массив в конец – jonjohnson

+0

Да, это то, что я искал! – jonjohnson

9

Would

print ' and '.join(array) 

вас удовлетворяет?

2

Вы можете использовать str.join:

>>> array = ['abc', 'def'] 
>>> print " and ".join(array) 
abc and def 
>>> array = ['abc', 'def', 'ghi'] 
>>> print " and ".join(array) 
abc and def and ghi 
>>> 

Edit:

Мой выше пост для вашего первоначального вопроса. Ниже для отредактированных один:

print "insert into users values({}, {}, {}, ...);".format(*array) 

Обратите внимание, что число {}-х должно соответствовать количеству элементов в array.

1

Если массив вход Integer типа, то вы должны сначала преобразовать в строкового типа массива, а затем использовать join метод для присоединения , или пространстве, что вы хотите , например:

>>> arr = [1, 2, 4, 3] 
>>> print(", " . join(arr)) 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: sequence item 0: expected string, int found 
>>> sarr = [str(a) for a in arr] 
>>> print(", " . join(sarr)) 
1, 2, 4, 3 
>>> 
0

Другой подход:

print(" %s %s bla bla %s ..." % (tuple(array))) 

, где вам нужно, как много спецификаторов формата %s как есть в массиве. Функция печати требует кортежа после %, поэтому вам нужно использовать tuple(), чтобы превратить массив в кортеж.

Смежные вопросы