簡體   English   中英

帶有元組的Python for循環

[英]Python for loop with a tuple in it

我很難理解這個for循環。 我是python的新手,所以我不明白這里到底發生了什么。 該代碼用於html轉義。

我的問題是:for循環如何執行? 為什么(...,)中的for(i,o)為何如此? 它怎么知道字符串s中有一個&符號?

def escape_html(s):
  for(i,o) in (("&", "&amp;"),(">","&gt;"),('<','&lt;'),('"',"&quot;")):  
    s=s.replace(i,o)
return s



print escape_html("hello&> this is do\"ge")

首先,您需要了解元組拆包。

(a, b) = ("foo", 1)

此表達式將"foo"分配給a1 b 循環內部可以使用相同的語法來解壓縮正在循環的迭代器對象的元素。

因此,對於循環的每個元素,您都在拆包嵌套元組的一個元素(可迭代)。

def escape_html(s):
  for (i,o) in (("&", "&amp;"),(">","&gt;"),('<','&lt;'),('"',"&quot;")):
    s = s.replace(i,o)
  return s

展開循環將為您提供以下內容:

def escape_html(s):
  s = s.replace("&", "&amp;")
  s = s.replace(">","&gt;")
  s = s.replace('<','&lt;')
  s = s.replace('"',"&quot;")
  return s

這有幫助嗎?

>>> for(i,o) in (("&", "&amp;"),(">","&gt;"),('<','&lt;'),('"',"&quot;")):
...     print "i: {}, o: {}".format(i,o)
...
i: &, o: &amp;
i: >, o: &gt;
i: <, o: &lt;
i: ", o: &quot;

在循環的每次迭代過程中,都會選擇迭代器的一個元素。 因此對於第一次迭代,該元素是元組("&", "&amp;") 然后將該元組解壓縮到變量io

語法

for x, y in z:

意思是“ for循環的每次迭代,將可迭代z的2元組解壓縮為兩個變量xy ”。

這不一定是True ; 您正在考慮一個while循環:

while True:

它設計用於迭代直到滿足某些條件,而for循環用於遍歷可迭代項。

而且也不知道對中的任何第一個字符都將在參數s ,但是如果不是, replace不會引發錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM