1.1 输入与输出
name=input("what's your name?")
print('hello %s' %name)
#%name代表变量的值,%s因为输入是字符类型,所以用%s代替
1.2 判断 if else语句
socre=input("what's your score?")
if int(socre)>=90:
print("Excellent")
else:
if int(score)<60:
print("fail")
else:
print("Good job")
#注意缩进
1.3 循环语句 for in
sum=0
for number in range(11):
sum=sum+number
print(sum)
#for循环迭代循环相同的内容,可以通过定义range来确定循环次数,range(11)指循环执行循环体10次(即0-10),相当于range(0,11)因为 python是左闭右开的,
#也可以用range指定步长 rang(0,11,2)指的是[0,2,4,6,8,10]
1.4 while循环
sum=0
number=1
while number<11:
sum=sum+number
number=number+1
print(sum)
#1到10 求和
#while适合循环次数不确定,for循环条件相对稳定,适合固定次数的循环
2.1数据类型 列表,元组,字典,集合
2.1.1 列表
列表与元组类似,其很多函数可以交叉使用
与元组对⽐,列表的⻓度可变、内容可以被修改
在列表中检查是否存在某个值远⽐字典和集合速度慢,因为
Python是线性搜索列表中的值,但在字典和集合中,在同样的时
间内还可以检查其它项(基于哈希表)。
#列表的增删改查排序等简单操作
List=['a','b','c']
print(list)
list.append('d') #在列表尾部添加元素
print(len(list)) #结果为4
list.insert(1,'mm')#在列表下标为0处插入元素mm
list.pop() #删除尾部元素
list.pop(2) #pop是用来删除并返回指定下标的,返回b
list.remove('c') #remove用来去除指定内容,只去除第一次出现该内容的位置
'a' in list #判断list内是否存在该内容,或用 not in
list_sort=[5,73,3,9]
list_sort.sort() #输出结果为排好序的数组(原地排序,不创建新对象),注意sort函数的一些选项,可以根据选项进行排序
sorted([7,1,2,6,0,3,2])#返回[0,1,2,2,3,6,7],该函数可以从任意序列的元素返回一个新的排好序的列表
#list函数常⽤来在数据处理中实体化迭代器或⽣成器:
gen=range(10)
list(gen)#输出结果为[0,1,2,3,4,5,6,7,8,9]
#与元组类似,可以通过串联操作‘+’来连接两个列表
list1=[1,2,3]
list2=['a','b','c']
list3=list1+list2
#也可以用extend来追加多个元素,显然extend效率比串联高
list4=list3.extend([4,5,6])
#切片
seq=[7,2,3,7,5,6,0,1]
seq[1:5]#返回[2,3,7,5] 左闭右开,如果省略起始元素或结束元素,则默认序列的开头或结尾;负数表明从后向前切片,例如:seq[-4:] 返回[5,6,0,1];seq[-6,-2]返回[6,3,5,6]
seq[::2]#返回[7,3,3,6,1] 2表示步长
seq[::-1]#可以表示将列表或元组颠倒过来
#zip函数
seq1=['foo','bar','baz']
seq2=['one','two','three']
zipped=zip(seq1,seq2)#返回[('foo','one'),('bar','two'),('baz','three')]
#zip也可以处理任意多的序列,元素的个数取决于最短的序列
#reversed函数 可以从后向前迭代一个序列
list(reversed(range(10)))#返回[9,8,7,6,5,4,3,2,1]
#reversed是一个生成器,只有实体化(即列表或for循环)之后才能创建翻转的序列
2.1.2 元组
元组是一个固定长度,不可改变的python序列对象。
#创建元组
tuples=('tupleA','tupleB')
nested_tup=((4,5,6),(7,8))
#用tuple可以将任意序列或迭代器转换为元组
tuple([4,5,2])#返回(4,5,2)
tup=tuple('string')#tup=('s','t','r','i','n','g')
#可以用方括号访问元组中的元素
tup[0]#返回's'
#虽然元组的对象元素不可变,但是如果元组中的某个对象是可变的,可在原位进行修改
tup=tuple(['foo',[1,2],True])
tup[1].append(3)#tup变为('foo',[1,2,3],True)
#加号将元祖串联
(4,None,'foo')+(6,0)+('bar',)#返回(4,None,'foo',6,0,'bar')
#元组乘以一个整数,会将几个元祖的复制串联起来
('foo','bar')*4#返回('foo','bar','foo','bar','foo','bar','foo','bar') 对象本身没有被复制,知识引用了它
#count方法,计数
a=(1,2,2,,3,4)
a.count(2)#返回2
2.1.3 字典(哈希映射或关联数组)
是键值对的大小可编辑和,键和值都是python对象
#定义一个字典
score={'guanyu':95,'zhangfei':96}
#添加一个元素
score['zhaoyun']=98
print(score)#返回{'guanyu':95,'zhangfei':96,'zhaoyun':98}
#访问
score['guanyu']#返回95
#删除值
del score['zhangfei']#将zhangfei与96这以键值对删去
#pop也用来删除,但是会返回对应键的值
#keys与values是字典的键和值的迭代器方法,虽然键值对没有顺序,这两个方法可以用相同的顺序输出键和值
list(score.keys())#返回['guanyu','zhangfei','zhaoyun']
list(score.values())#返回[95,96,98]
#update方法可以将一个字典与另一个融合,原地改编字典,因此任何传递给update的键的旧的值都会被舍弃
score.update({1:'foo',2:12})#返回{'guanyu':95,'zhangfei':96,'zhaoyun':98,1:'foo',2:12}
#用两个序列配对组合成字典
mapping={}
for key,value in zip(key_list,value_list):
mapping[key] =value
#dict可以接受2元元组的列表:
mapping=dict(zip(range(5),reversed(range(5))
#返回{0:4,1:3,2:2,3:1,4:0}
2.1.4 集合
集合式无序的不可重复的元素的集合。可以把它当做字典,但是只有键没有值
#创建集合
set([2,2,2,1,3,3])#返回{1,2,3}
{2,2,2,1,3,3}#返回{1,2,3}
#集合支持合并,交集,差分和对称差等数学集合运算,原地操作
a={1,2,3,4,5}
b={3,4,5,6,7,8}
a.union(b)#返回并集
a|b#返回交集
a.intersection(b)#返回交集
a&b#交集
#与字典类似,集合元素通常是不可变得。要获得类似列表的元素,必须转换成元祖
data=[1,2,3,4]
set={tuple(my_data)}#set返回{(1,2,3,4)}
#检查子集或父集:issubset(),issuperset()
#集合的内容相同时,集合对等
{1,2,3}=={3,2,1}#返回True
3 函数
函数使用def关键字声明,用return关键字返回值
函数代码块以def关键词开头,后接函数标识符名称和圆括号,在圆括号里是传进来的参数,然后通过return进行函数结果得反馈。
def addone(score):
retun score+1
print addone(99)
练习题:
-
如果我想在Python中引用scikit-learn库该如何引用?pip install scikit-learn import scikit-learn
-
求1+3+5+7+…+99的求和,用Python该如何写?
#法一: sum=0 for number in range(1,100,2): sum=number+sum print(sum) #法二: print(sum(range(1,100,2))) #法三: sum=0 number=1 while number<100: sum=number+sum number+=2 print(sum)