Я использую Python для написания сценариев некоторых операций в определенных местах памяти (32-битные адреса) во встроенной системе.
Когда я конвертирую эти адреса в строки, целые числа и шестнадцатеричные значения, кажется, что появляется конечный L. Это может быть настоящей проблемой, например, следующий, казалось бы, безобидный код не будет работать:
int(hex(4220963601))
Или этот:
int('0xfb96cb11L',16)
Кто-нибудь знает, как этого избежать?
Пока что я ' для v в x: v = [0,0,0] здесь, если вы напечатаете x, вы получите [[1,2,3], [4,5,6]] .. так что измененный v на самом деле не является ссылкой на список в ...
Мой вопрос касается следующего цикла for:
x=[[1,2,3],[4,5,6]]
for v in x:
v=[0,0,0]
здесь, если вы напечатаете x, вы получите [[1,2,3], [4,5,6]] .. так что v изменено не является ссылкой на список в x. Но когда вы делаете что-то вроде следующего:
x=[[1,2,3],[4,5,6]]
for v in x:
v[0]=0; v[1]=0; v[2] =0
, вы получаете x как [[0,0,0], [0,0,0]]. Это становится трудным, если список внутри x довольно длинный, и даже если сделать что-то вроде этого:
x=[[1,2,3],[4,5,6]]
for v in x:
for i in v:
i = 0
даст мне x как [[1,2,3], [4,5,6]]. Лучше всего использовать для i в xrange (0,3): v [i] = 0 .. Хотя я все равно хотел бы знать, что здесь происходит и какие есть другие альтернативы, когда я иметь список списков или несколько вложенных списков.