for ... in和for ...,... in之间的差异

时间:2016-06-21 08:45:21

标签: python

任何人都可以帮我找出

之间的区别
for abc in xyz

for abc, n in xyz

我知道在第一种情况下,每次迭代都会将每个字母分配给abc。它与第二种情况有什么不同

4 个答案:

答案 0 :(得分:2)

xyz=[(3,8),(23,13),(89,34)]
for abc, n in xyz: print( abc, " ## ",n)

结果:

3  ##  8
23  ##  13
89  ##  34

答案 1 :(得分:1)

最初两行都缺少$('#btnMan').click(function() { if ($('#WrapOfPasengers div[data-number]').size() >= 6) { $('#Modal .messageDanger').text('توجه!! امکان انتخاب بیش از 6 صندلی وجود ندارد.'); $('#Modal').modal('show'); /////////////////////////// return false; /////////////////////////// } if (ValidateGender(SeatNo, $('.seats > ul:nth-child(1) > li').length, 'man')) { //------------------- $('#WrapOfPasengers').append('<div class="btn-group" data-number="' + SeatNo + '"><button type="button" class="btn btn-info"> <span class="soap-icon-close" style="font-size: 25px"></span> &nbsp;<span class="spanNum">' + SeatNo + '</span>&nbsp;<span class="soap-icon-man-3" style="font-size: 25px"></span> </button></div>'); $('#' + SeatNo).addClass('selected'); $('div[data-number=' + SeatNo + ']').click(function() { var id = $(this).attr('data-number'); $('#' + id).removeClass('btn-info').removeClass('selected').removeClass('btn-danger').addClass('btn-default'); $(this).remove(); }); $('#ModalInfo').modal('hide'); $('#' + SeatNo).switchClass("btn-default", "btn-info"); } else { $('#ModalInfo').modal('hide'); } });

第一个迭代字符串:。这将为每个字符进行一次迭代。 第二个迭代变量'xyz'。这可能是任何事情,因此没有任何关于结果迭代的说法。

第一个版本将项目分配给变量xyz。第二个要求项目(每次迭代)成对,就像一个2元组。第一个值将分配给abc,另一个值将分配给abc。一个例子:

n

结果:

for i, character in enumerate('abc'):
    print(i, character)

答案 2 :(得分:0)

这是在循环中进行“元组解包”。什么是元组解包?

>>> t = ("foo", "bar")
>>> a, b = t
>>> a
'foo'
>>> b
'bar'

这仅在元组具有与要将其解包的变量具有相同数量的元素时才有效。如果你有一个元组的列表(或生成器),你可以循环执行相同的操作。

一些例子:

>>> for a, b in zip("abc", "123"):
...     print(a, b)
... 
('a', '1')
('b', '2')
('c', '3')
>>> for i, e in enumerate("abc"):
...     print(i, e)
... 
(0, 'a')
(1, 'b')
(2, 'c')

答案 3 :(得分:0)

不同之处在于for abc, n in xyz将解析xyz中的两个元素,例如,如果每个迭代都有xyz=[[1,2],[3,4]]列表,则可以从内部列表中获取元素。但是,如果您有xyz[[1,2,3],[4,5,6]]并且尝试for abc, n in xyz,则会收到错误,因为有三个要解包的元素,那么您应该for abc, n, a in xyz

如果你执行for abc in xyz,那么你将得到每个内部列表(但不是它们的元素被分开)。试试这些例子:

xyz=[[1,2],[3,4]]
for abc in xyz:
   print abc

for abc, n in xyz:
  print "first element", abc
  print "second element", n

xyz = [[1,2,3],[4,5,6]]

# in this case you will get an error
for abc, n in xyz:
  print "first element", abc
  print "second element", n

# this one will work
for abc, n, a in xyz:
   print "first element", abc
   print "second element", n
   print "third element", a