python for循环

点读系列《流畅的python》

我只是一个虾纸丫 提交于 2019-12-03 00:13:41
第1章 python数据模型 python的写法是由背后的魔法方法实现的,比如obj[key],解释器实际调用的是obj.__getitem__(key) 作者把魔法方法叫做双下方法,因为有两个下划线 collections.namedtuple可以用来创建只有少数属性但没有方法的对象,比如 beer_card = Card('7', 'diamonds') random.choice和random.sample不一样的地方在于,sample是返回序列,choice是返回元素,当使用sample(list, 1)[0]的时候,不如直接使用choice(list) deck[12::13],是指先抽出索引是12的那张牌,然后每向后数13张牌拿一张 实现了__getitem__让对象变得可迭代了 sorted(deck, key=spades_high) python sorted函数 suit_values = dict(spades=3, hearts=2, diamonds=1, clubs=0) def spades_high(card): rank_value = FrenchDeck.ranks.index(card.rank) return rank_value * len(suit_values) + suit_values[card.suit]

一些面试题总结

匿名 (未验证) 提交于 2019-12-02 23:57:01
合并字典:请合并下面两个字典 a = {"A":1,"B":2},b = {"C":3,"D":4} dict1 = {"A": 1, "B": 2} dict2 = {"C": 3, "D": 4} # 方式一 **表示打散 print({**dict1, **dict2}) # * ** 都表示打散可迭代对象 # 方式二 update方法 dict1.update(dict2) # 合并字典 元组操作:如何把元组 ("a","b") 和元组 (1,2),变为字典 {"a":1,"b":2} # zip的使用 a = ("a", "b") b = (1, 2) print(dict(zip(a, b))) 交换字典的键和值 dict1 = {"A": 1, "B": 2} res = {k: v for v, k in dict1.items()} print(res) 我们知道对于列表可以使用切片操作进行部分元素的选择,那么如何对生成器类型的对象实现相同的功能呢? Python交换两个变量的值 a,b=b,a 这个不是元组解包,在栈的顶端做两个值的交换。 read()/readline()/readlines() with open('test.txt', 'r', encoding='utf-8') as f: text = f.read() print(text) with

廖雪峰网站:学习python基础知识―循环(四)

匿名 (未验证) 提交于 2019-12-02 22:56:40
names = [ ‘ Michal ‘ , ‘ Bob ‘ , ‘ tracy ‘ ] for name in names : print ( name ) sum = 0 for x in [ 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 ]: sum = sum + x print ( sum ) # 打印数字 0 - 9 for x in range ( 10 ): print ( x ) sum = 0 n = 99 while n > 0 : sum = sum + n n = n - 2 print ( sum ) n = 1 while n <= 100 : if n > 10 : # 当n = 11时,条件满足,执行break语句 break # break语句会结束当前循环 print ( n ) n = n + 1 print ( " end " ) n = 0 while n < 10 : n = n + 1 if n % 2 == 0 : # 如果n是偶数,执行continue语句 continue # continue语句会直接继续下一轮循环,后续的print()语句不会执行 print ( n ) # 计算1+2+3+...+100: sum = 0 n = 1 while n <= 100 : sum = sum +

Python基础 列表介绍、使用

匿名 (未验证) 提交于 2019-12-02 22:56:40
第3章 学习目标: 列表是什么以及如何使用列表元素。列表让你能够在一个地方存储成组的信息,其中可以只包含几个元素,也可以包含数百万个元素。列表是新手可直接使用的最强大的Python功能之一,它融合了众多重要的编程概念。 3.1 列表是什么 列表由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字0~9或 所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。 鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如letters、digits或names)是 个不错的主意。 在Python中,用中括号 [] 表示列表,并用逗号来分隔其中的元素。 例如: bicycles.py bicycles = [ ‘trek‘, ‘cannondale‘, ‘redline‘, ‘specialired‘ ] print(bicycles) # 结果: [ ‘trek‘, ‘cannondale‘, ‘redline‘, ‘specialired‘] 3.1.1 访问列表元素 列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。 要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。 # 例如,从列表bicycles中提取第一款自行车 bicycles = [ ‘trek‘,

Python 迭代器

匿名 (未验证) 提交于 2019-12-02 22:56:40
1、迭代器定义   迭代器只不过是一个实现了迭代器协议的 容器对象 。它基于两个方法:   __iter__  返回迭代器本身 2、内建函数iter()   迭代器可以通过内置函数iter()和一个序列创建: it = iter( ‘ abc ‘ ) print it.next() print it.next() print it.next() print it.next() a b c Traceback (most recent call last): File " f:\test\iter.py " , line 7, in <module> print it.next() StopIteration   当序列遍历完时,将抛出StopIteration异常,这使迭代器和循环兼容,因为它们将捕获这个异常而停止循环。 3、生成定制迭代器   要创建定制迭代器,编写一个具有next()方法的类,只要该类提供返回迭代器实例的__iter__()方法即可。 class MyIterator(object): def __init__ (self, step): self.step = step def next(self): if self.step == 0: raise StopIteration self.step -= 1 return self.step def _

python tuple 元组

匿名 (未验证) 提交于 2019-12-02 22:56:40
python 3.6.5 元组的特性和定义 与列表类型 只不过 [ ] 改成了() 特性:   1.不可变(元组本身不可变,但是可以存可变类型的element){猜测因为可变element的地址不可变而存在元组里面也只是地址而已:例如:list dict 等}   2.可存放多个值   3.按照从左到右的顺序定义元组元素,下表从0,开始顺序访问。有序   #解释为什么要有不可变的元组出现呢? 创建:   ages=tuple()   ages=()   ages=1, #注意以逗号隔开,默认为元组   ages=( 1 , )#注意,元组中只包含一个元素时,需要在元素后面添加逗号来消除歧义   ages=(11,22,33,44)   ages=tuple((11,22,33,44)) tuple_list =( v for v in range ( 1 , 8 ))#生成器表达式 print ( tuple_list , type ( tuple_list )) tup = tuple ( tuple_list ) print ( tup , type ( tup )) >>:< generator object <genexpr> at 0x0000000001EC18E0 > < class ‘ generator ‘> >>:( 1 , 2 , 3 , 4 , 5 , 6

【Python】两个for循环嵌套练习

匿名 (未验证) 提交于 2019-12-02 22:56:40
要求:取下方篮框中内容并写入csv文件中。用两个for循环将每一行取出来作为一个元素存放到新数组中。 1 # coding=utf-8 2 from selenium import webdriver 3 from time import sleep 4 import keyword 5 from selenium . webdriver . common . keys import Keys 6 from selenium . webdriver . support . wait import WebDriverWait 7 from selenium . webdriver . support . ui import Select 8 import csv 9 import random 10 import io 11 outputFilePath = " F:\CaipiaoOutputData.csv " 12 # 滚动滚动条` 13 def MoveScorllBar ( driver , down , range1 , range2 ): 14 moneCount = random . randint ( range1 , range2 ) 15 for num in range ( 1 , moneCount ): 16 if ( down == " down " )

Python 列表表达式 ,迭代器(1)

匿名 (未验证) 提交于 2019-12-02 22:56:40
python 环境 3.5 1 、列表: s = []; for i in s: i = handleFunction(i); s.append(i) 2 、列表 s =[handleFunction(i) for i in s] 或者 s =[handleFunction(str(i)) for i in s] // 转为字符串 3、不用for循环(for循环的替代)map eg: seq 只有只有一个参数时: map==for **将元组转换成list*** >>> list(map(int,(1,2,3))) [ 1, 2, 3] ***将字符串转换成list*** >>>list(map(int,‘1234‘)) [ 1, 2, 3, 4] ***提取字典的key,并将结果存放在一个list中*** >>> res=list(map(int,{"1":"a","2":"b"})) [ 1, 2 ] #将小写转成大写 def u_to_l (s): return s.upper() print list( map(u_to_l, ‘asdfd‘)) map ( function iterable ... ) function iterable iterable function 原文:https://www.cnblogs.com/cbugs/p/9271458.html

python基础知识:数据结构的学习

匿名 (未验证) 提交于 2019-12-02 22:56:40
python的数据结构有:列表、元组、字典 列表: 作用:处理 有序 项目的数据结构 list=["a",‘b‘,‘v‘,‘d‘] # 打印长度 print(len(list)) # 循环打印 for i in list: print i # 在序列最后插入数据 list.append("5") for i in list: print i print(list[0]) # 删除序列中的某个元素 del list[0] print(list[0]) # 对列表进行排序 list.sort() print(list) 元组 作用:同列表类似 区别:元组不可变,不可被修改 # 使用元组 zoo = (‘wolf‘, ‘elephant‘, ‘penguin‘) print ‘Number of animals in the zoo is‘, len(zoo) new_zoo = (‘monkey‘, ‘dolphin‘, zoo) print ‘Number of animals in the new zoo is‘, len(new_zoo) print ‘All animals in new zoo are‘, new_zoo print ‘Animals brought from old zoo are‘, new_zoo[2] print ‘Last animal

Python中yield的理解与使用

匿名 (未验证) 提交于 2019-12-02 22:54:36
总结: 通常的for...in...循环中,in后面是一个数组,这个数组就是一个可迭代对象,类似的还有链表,字符串,文件。它可以是mylist = [1, 2, 3],也可以是mylist = [x*x for x in range(3)]。 它的缺陷是所有数据都在内存中,如果有海量数据的话将会非常耗内存。生成器是可以迭代的,但只可以读取它一次。因为用的时候才生成。比如 mygenerator = (x*x for x in range(3)),注意这里用到了(),它就不是数组,而上面的例子是[]。我理解的生成器(generator)能够迭代的关键是它有一个next()方法,工作原理就是通过重复调用next()方法,直到捕获一个异常。可以用上面的mygenerator测试。使用next可以很好的看出yield的工作机制。当yield使用完成后,就会报出exception。带有 yield 的函数不再是一个普通函数,而是一个生成器generator,可用于迭代,工作原理同上。 简要理解:yield就是 return 返回一个值,并且记住这个返回的位置,下次迭代就从这个位置后(下一行)开始。带有yield的函数不仅仅只用于for循环中,而且可用于某个函数的参数,只要这个函数的参数允许迭代参数。比如array.extend函数,它的原型是array.extend(iterable)