摘要: for循环可以嵌套,因此,在列表生成式中,也可以用多层 for 循环来生成列表。 对于字符串 'ABC' 和 '123',可以使用两层循环,生成全排列: >>> [m + n for m in 'ABC' for n in '123']['A1', 'A2', 'A3', 'B1', 'B2', 'B3', 'C1', 'C2', 'C3'] 翻译成循环代码就像下面这样: 阅读全文
posted @ 2018-01-27 12:33 全威儒 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 列表生成式的 for 循环后面还可以加上 if 判断。例如: >>> [x * x for x in range(1, 11)][1, 4, 9, 16, 25, 36, 49, 64, 81, 100] 如果我们只想要偶数的平方,不改动 range()的情况下,可以加上 if 来筛选: >>> [x * x for x in range(1, 11) if x % 2 == 0][4, 16, ... 阅读全文
posted @ 2018-01-27 12:31 全威儒 阅读(201) 评论(0) 推荐(0) 编辑
摘要: 使用for循环的迭代不仅可以迭代普通的list,还可以迭代dict。 假设有如下的dict: d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 } 完全可以通过一个复杂的列表生成式把它变成一个 HTML 表格: tds = ['%s%s' % (name, score) for name, score in d.iteritems()]print ''print '... 阅读全文
posted @ 2018-01-27 12:29 全威儒 阅读(206) 评论(0) 推荐(0) 编辑
摘要: 要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],我们可以用range(1, 11): >>> range(1, 11)[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 但如果要生成[1x1, 2x2, 3x3, ..., 10x10]怎么做?方法一是循环: >>> L = []>>> for x in range(1, 11):... L.app... 阅读全文
posted @ 2018-01-27 12:25 全威儒 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 我们了解了如何迭代 dict 的key和value,那么,在一个 for 循环中,能否同时迭代 key和value?答案是肯定的。 首先,我们看看 dict 对象的 items() 方法返回的值: >>> d = { 'Adam': 95, 'Lisa': 85, 'Bart': 59 }>>> print d.items()[('Lisa', 85), ('Adam', 95), ('Bart'... 阅读全文
posted @ 2018-01-27 12:22 全威儒 阅读(242) 评论(0) 推荐(0) 编辑
摘要: 我们已经了解了dict对象本身就是可迭代对象,用 for 循环直接迭代 dict,可以每次拿到dict的一个key。 如果我们希望迭代 dict 对象的value,应该怎么做? dict 对象有一个 values() 方法,这个方法把dict转换成一个包含所有value的list,这样,我们迭代的就是 dict的每一个 value: d = { 'Adam': 95, 'Lisa': 85, 'B... 阅读全文
posted @ 2018-01-27 12:18 全威儒 阅读(250) 评论(0) 推荐(0) 编辑
摘要: Python中,迭代永远是取出元素本身,而非元素的索引。 对于有序集合,元素确实是有索引的。有的时候,我们确实想在 for 循环中拿到索引,怎么办? 方法是使用 enumerate() 函数: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul']>>> for index, name in enumerate(L):... print index, '-', n... 阅读全文
posted @ 2018-01-27 12:15 全威儒 阅读(224) 评论(0) 推荐(0) 编辑
摘要: 在Python中,如果给定一个list或tuple,我们可以通过for循环来遍历这个list或tuple,这种遍历我们成为迭代(Iteration)。 在Python中,迭代是通过 for ... in 来完成的,而很多语言比如C或者Java,迭代list是通过下标完成的,比如Java代码: for (i=0; i<list.length; i++) { n = list[i];} 可以看出... 阅读全文
posted @ 2018-01-27 12:10 全威儒 阅读(2615) 评论(0) 推荐(0) 编辑
摘要: 字符串 'xxx'和 Unicode字符串 u'xxx'也可以看成是一种list,每个元素就是一个字符。因此,字符串也可以用切片操作,只是操作结果仍是字符串: >>> 'ABCDEFG'[:3]'ABC'>>> 'ABCDEFG'[-3:]'EFG'>>> 'ABCDEFG'[::2]'ACEG' 在很多编程语言中,针对字符串提供了很多各种截取函数,其实目的就是对字符串切片。Python没有针对字... 阅读全文
posted @ 2018-01-27 12:08 全威儒 阅读(1750) 评论(0) 推荐(0) 编辑
摘要: 对于list,既然Python支持L[-1]取倒数第一个元素,那么它同样支持倒数切片,试试: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] >>> L[-2:]['Bart', 'Paul'] >>> L[:-2]['Adam', 'Lisa'] >>> L[-3:-1]['Lisa', 'Bart'] >>> 阅读全文
posted @ 2018-01-27 12:06 全威儒 阅读(294) 评论(0) 推荐(0) 编辑
摘要: 取一个list的部分元素是非常常见的操作。比如,一个list如下: >>> L = ['Adam', 'Lisa', 'Bart', 'Paul'] 取前3个元素,应该怎么做? 笨办法: >>> [L[0], L[1], L[2]]['Adam', 'Lisa', 'Bart'] 之所以是笨办法是因为扩展一下,取前N个元素就没辙了。 取前N个元素,也就是索引为0-(N-1)的元素,可以用循环: >... 阅读全文
posted @ 2018-01-27 12:01 全威儒 阅读(1851) 评论(0) 推荐(0) 编辑