对于下面的代码,如果.intel_syntax noprefix
tab: .int 1,5,8
li: .asciz "\n"
descrip: .asciz "%d"
debut: .asciz " MON PROGRAMME ASSEMBLEUR\n"
bar: .asciz "=================================================\n"
.data
.global main
main:
push offset bar
call print_string
add esp,4
push offset debut
call print_string
add esp,4
push offset bar
call print_string
add esp,4
push offset tab
call affab
add esp,4
call permut
call lig
call lig
push offset tab
call affab
add esp,4
mov eax,1
mov ebx,0
int 0x80
permut:
push ebp
mov ebp,esp
mov eax, [ebp+8]
mov ebx,[eax]
mov ecx,[eax+4]
mov [eax],ecx
mov [eax+4],ebx
pop ebp
ret
affab:
push ebp
mov ebp, esp
mov eax, [ebp+8]
mov ecx,0
pour:
cmp ecx,3
jge finpr
push [eax+ecx*4]
call print_int
add esp,4
call lig
inc ecx
jmp pour
finpr:
pop ebp
ret
print_int:
push ebp
mov ebp, esp
pusha
push [ebp+8]
push offset descrip
call printf
add esp, 8
popa
pop ebp
ret
print_string:
push ebp
mov ebp, esp
pusha
push [ebp+8]
call printf
add esp, 4
popa
pop ebp
ret
lig:
push ebp
mov ebp,esp
push offset li
call print_string
add esp,4
pop ebp
ret
是lst
,则会抛出异常。
None
有没有一种方法可以让它在for a in lst:
..
为lst
时不执行循环?
现在我总是需要检查一下:
None
答案 0 :(得分:2)
使用if
:
if lst:
for a in lst:
do_something
答案 1 :(得分:2)
您可以尝试以下方法:
for a in lst if lst else []:
...
或者最好只使用or
进行检查:
for a in lst or []:
答案 2 :(得分:2)
如果bool(lst)导致False,则可以使用or
运算符遍历一个空列表
>>> lst = None
>>> for a in lst or []:
... print(a)
...
>>>