Python Trailing L Problem

Я использую 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 .. Хотя я все равно хотел бы знать, что здесь происходит и какие есть другие альтернативы, когда я иметь список списков или несколько вложенных списков.

5
задан Jose 6 May 2011 в 21:33
поделиться