Ответ 1
Может быть, лучше, но это должно работать
tuple([10*x for x in img.size])
У меня есть следующий код:
print img.size
print 10 * img.size
это напечатает
(70, 70)
(70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70, 70)
пока я хочу, чтобы он печатал
(700, 700)
Есть ли способ сделать это, не записывая
print (10 * img.size[0], 10 * img.size[1])
PS: img.size - это изображение PIL. Не знаю, если это имеет значение в этом случае.
Может быть, лучше, но это должно работать
tuple([10*x for x in img.size])
img.size = tuple(i * 10 for i in img.size)
pythonic будет использовать понимание списка:
y = tuple([z * 10 for z in img.size])
Другой способ:
y = tuple(map((10).__mul__, img.size))
Решение:
set1=(70, 70)
tuple(2*array(set1))
Объяснение: arrays
возможно прямое скалярное умножение. Следовательно, tuple
, называемый set1
, преобразуется в array
. Я предполагаю, что вы хотите продолжать использовать tuple
, поэтому мы преобразуем array
обратно в tuple
.
Это решение состоит в том, чтобы избежать явного и подробного цикла for
. Я не знаю, быстрее ли это или происходит то же самое в обоих случаях.
Вероятно, это более простой способ, но
print map(lambda x: 10*x, img.size)
Будет делать то, что вы хотите, хотя оно печатается как список, а не кортеж. Оберните вызов map
внутри tuple(map...)
, если вы хотите, чтобы он печатался как кортеж (скобки, а не квадратные скобки).
Если у вас есть эта проблема чаще и с большими кортежами или списками, вы можете использовать библиотеку numpy, что позволяет вы должны выполнять всевозможные математические операции над массивами. Однако в этой простой ситуации это было бы полным перегибом.
Вы можете попробовать что-то вроде этого:
print [10 * s for s in img.size]
Он даст вам новый список со всеми элементами, которые у вас есть в кортеже, умноженным на 10
В соответствии с предыдущими ответами, но используя numpy:
import numpy as np
result = tuple(10*np.array(img.size))
добавление ничего, кроме разнообразия.
import operator
img_size = (70, 70)
map(operator.mul, img_size, len(img_size)*(10,))