Форум сайта python.su
я просто про text.translate(string.maketrans(“abc”, “123”)) ничего не нашёл,) а c php намного лучше знаком))
Офлайн
Не за что. Кстати, вы поняли, что вопросы нужно задавать более адекватно?
Вот это:
есть массив в неё есть единицы и нули нужно поменять нули на единицы а единицы на нулиОчень слабо кореллирует с тем, что вам действительно было нужно.
Офлайн
почему? всё что было написанно легко переделывается под масссив с нулями и единицами, мой пхпшный пример - это просто как пример замены одного на другое, тем более мне нужно много чего менять и всё предложенное пригодится
Офлайн
Вопрос-то у вас не про пхп был.
Я бы например, понял бы вашу фразу ‘есть массив в неё есть единицы и нули’ так:
Судя по вашему второмупосту это 'array([,])'.
А судя по php-шному коду и ответу ‘то что нужно’ на мой пост это вообще строка.
Офлайн
ещё приёмчик
>>> test = ['0','0','1','1']
>>> list(''.join(test).replace('0', '#').replace('1', '0').replace('#', '1'))
['1', '1', '0', '0']
>>>
>>> def f2():
... test = ['0','0','1','1']
... n = ''.join(test).translate(string.maketrans('01', '10'))
... return n
...
>>> f2()
__main__:3: DeprecationWarning: string.maketrans is deprecated, use bytes.maketrans instead
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in f2
File "/usr/lib/python3.1/string.py", line 60, in maketrans
raise TypeError("maketrans arguments must be bytes objects")
TypeError: maketrans arguments must be bytes objects
>>> def f2():
... test = ['0','0','1','1']
... n = ''.join(test).translate(string.maketrans(b'01', b'10'))
... return n
...
>>> f2()
'1100'
>>> def f():
... test = ['0','0','1','1']
... n = list(''.join(test).replace('0', '#').replace('1', '0').replace('#', '1'))
... return n
...
>>> f()
['1', '1', '0', '0']
>>> import string
>>> def f2():
... test = ['0','0','1','1']
... n = ''.join(test).translate(string.maketrans('01', '10'))
... return n
...
>>> f2()
__main__:3: DeprecationWarning: string.maketrans is deprecated, use bytes.maketrans instead
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 3, in f2
File "/usr/lib/python3.1/string.py", line 60, in maketrans
raise TypeError("maketrans arguments must be bytes objects")
TypeError: maketrans arguments must be bytes objects
>>> def f2():
... test = ['0','0','1','1']
... n = ''.join(test).translate(string.maketrans(b'01', b'10'))
... return n
...
>>> f2()
'1100'
>>> import timeit
>>> timeit.Timer(lambda: f()).repeat(3, 1000000)
[4.891308069229126, 4.862432956695557, 4.872588157653809]
>>> timeit.Timer(lambda: f2()).repeat(3, 1000000)
^CTraceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.1/timeit.py", line 220, in repeat
t = self.timeit(number)
File "/usr/lib/python3.1/timeit.py", line 193, in timeit
timing = self.inner(it, self.timer)
File "/usr/lib/python3.1/timeit.py", line 99, in inner
_func()
File "<stdin>", line 1, in <lambda>
File "<stdin>", line 3, in f2
File "/usr/lib/python3.1/string.py", line 61, in maketrans
L = bytearray(range(256))
KeyboardInterrupt
>>> timeit.Timer(lambda: f2()).repeat(3, 100)
[0.004187107086181641, 0.004000186920166016, 0.00868082046508789]
>>> timeit.Timer(lambda: f2()).repeat(3, 1000)
[0.052967071533203125, 0.041378021240234375, 0.042649030685424805]
>>> timeit.Timer(lambda: f()).repeat(3, 1000)
[0.00487518310546875, 0.004996061325073242, 0.012998104095458984]
>>>
Отредактировано (Фев. 2, 2011 04:26:58)
Офлайн
RumatoЕсли бы у вас был изначально именно массив, а не строки как потом оказалось -
набор индексированных однотипных данных, в моём случае это d = array([,])
>>> import numpy as np
>>> a = np.array([[0, 0],[1, 1]])
>>> a
array([[0, 0],
[1, 1]])
>>> np.where(a==1, 0, 1)
array([[1, 1],
[0, 0]])
Офлайн
я просто только начал на питоне программировать, многое пока ещё непривычно, и мне нужно не только заменять нули на единицы или наоборот, просто строки хоть и не входили в тему топика, но всёравно полезны мне, а за замечания и примеры кода всем большое спасибо, просто в учебниках ничего не было об этом и как правильно производить замены я просто не знал, теперь благодаря Вашей помощи разобрался, ещё раз Всем спасибо за помощь
Отредактировано (Фев. 2, 2011 09:59:20)
Офлайн
соблюдайтеправилапунктуации
Офлайн
Да и вообще следует почитать правила орфографии:
http://libelli.narod.ru/humour/trigg_r.html
Офлайн
спс, почитаю
Отредактировано (Фев. 2, 2011 12:34:02)
Офлайн