Day05 - 2018-04-07

今天尝试了下使用几何推导式优化原有的代码,使其pythonic一些,瞬间感觉高大上了

程序逻辑是从两个csv中读出数据,每行读到是一个list,需要统计这两个csv读到的所有list的前两项组成的list有多少不重复记录。很明显,让我们用set去统计唯一值,原来的写法是这样的

tel_set = set()

for text in texts:

    tel_set.add(text[0])

    tel_set.add(text[1])

for call in calls:

    tel_set.add(call[0])

    tel_set.add(call[1])

print(len(tel_set))

很符合正常的思维逻辑

而使用集合推导式处理过pythonic是这样

tel_set = {item for item_list in (texts + calls) for i, item in enumerate(item_list) if i < 2}

print(len(tel_set))

是不是高大上很多~~

这里有几点要说明,集合(set)推导式使用与列表推导式相同,只是把[]换成了{},本例使用了list的运算list1+list2的结果是这两个list的合集。另外,也使用了enumerate函数,它是一个迭代器,在循环时返回下标,这里这需要统计前两项,因此用来判断下标是否在列表的前两项

你可能感兴趣的:(Day05 - 2018-04-07)