大数据微专业_1.Python基础_1.2_序列及通用操作

In [7]:

'''
1.2 1.Python基础_1.2_序列及通用操作
序列分类:可变序列list,不可变序列tuple,str
'''

Out[7]:

'\n1.2 1.Python基础_1.2_序列及通用操作\n序列分类:可变序列list,不可变序列tuple,str\n'

In [6]:

x = 1
print(x,type(x))
x = 2
print(x,type(x))
x = 'Hello'
print(x,type(x))
1 <class 'int'>
2 <class 'int'>
Hello <class 'str'>

In [4]:

x = ['a','b','c','d']
print(x[0])
print(x[1])
print(x[2])
print(x[3])
a
b
c
d

In [8]:

# 判断值是否属于序列
lst = [1,2,3,4,5,6,7,8]
a,b,c = 1,2.0,'abc'
print(a in lst)
print(b in lst)
print(c in lst) 
True
True
False

In [12]:

#序列连接与重复,序列是有顺序的,顺序是严格不变的
lst1 = [1,2,3]
lst2 = ['a','b','c']
print(lst1 + lst2)
print(lst2 + lst1)
lst1.append(lst2)
print(lst1)
print(lst1 * 3)
print(lst2 * 3)
[1, 2, 3, 'a', 'b', 'c']
['a', 'b', 'c', 1, 2, 3]
[1, 2, 3, ['a', 'b', 'c']]
[1, 2, 3, ['a', 'b', 'c'], 1, 2, 3, ['a', 'b', 'c'], 1, 2, 3, ['a', 'b', 'c']]
['a', 'b', 'c', 'a', 'b', 'c', 'a', 'b', 'c']

In [14]:

# 下标索引
print(lst)
print(lst[0],lst[1],lst[2])
print(lst[-1],lst[-2],lst[-3])
[1, 2, 3, 4, 5, 6, 7, 8]
1 2 3
8 7 6

In [19]:

# 切片
print(lst)
print(lst[2:5])   #切片可以理解成列表的值空间,且是一个左闭右开的区间
print(lst[3:5])
print(lst[:5])
print(lst[5:])
[1, 2, 3, 4, 5, 6, 7, 8]
[3, 4, 5]
[4, 5]
[1, 2, 3, 4, 5]
[6, 7, 8]

In [26]:

# 步长
print(lst)
print(lst[2:7:2])
print(lst[:6:3]) #从lst[0]开始,步长为3
print(lst[1::2]) #从lst[1]开始,步长为2
print(lst[::2])  #从lst[0]开始,步长为2
[1, 2, 3, 4, 5, 6, 7, 8]
[3, 5, 7]
[1, 4]
[2, 4, 6, 8]
[1, 3, 5, 7]

In [29]:

# 序列基本的全局函数
lst = [9,8,7,6,5,4,3,2,1,0]
print(len(lst))
print(max(lst))
print(min(lst))
print(sum(lst))  #函数
print(lst.index(9)) #方法
lst1 = [1,1,2,2,2,2,3,3,3,3,5,5,5,4,4,5]
print(lst1.count(2))
10
9
0
45
0
4

In [32]:

x1 = [1,2,3,[1],[1,1]]
print(x1.count(1))
x2 = [1,2,5,1,'1','1']
print(x2.count(1))
x3 = [45,67,89,45,34,22,1]
print(x3.index(45))
x4 = [1,2,3,4,5,6,7,8]
print(type(x1))
print(type(x2))
print(type(x1[0]))
print(type(x1[3]))
print(type(x1[-1]))
print(type(x1[2:4]))
1
2
0
<class 'list'>
<class 'list'>
<class 'int'>
<class 'list'>
<class 'list'>
<class 'list'>

In [33]:

'''
1.2.2, 列表list的常用操作
列表是Python中最基本的数据结构,它支持字符、数字、字符串,甚至可以包含列表(即嵌套)
列表用[]标识,是python最常用的复合型数据结构
列表中的值的切片也可以用到变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认从0开始,从右到左索引默认从-1开始,下标可以为空表示取到头部
加号+是列表连接运算符,星号*是重复操作
'''

Out[33]:

'\n1.2.2, 列表list的常用操作\n列表是Python中最基本的数据结构,它支持字符、数字、字符串,甚至可以包含列表(即嵌套)\n列表用[]标识,是python最常用的复合型数据结构\n列表中的值的切片也可以用到变量[头下标:尾下标],就可以截取相应的列表,从左到右索引默认从0开始,从右到左索引默认从-1开始,下标可以为空表示取到头部\n加号+是列表连接运算符,星号*是重复操作\n'

In [39]:

# 列表的特征

lst1 = [1,2,3,'a','b',[0],[1,[1,2,3],'name'],2]
# 可包含任意类型的对象:数据、字符串、列表等
print(lst[2])

lst2 = [143,56,894,67,43]
print(lst2[0],lst2[4],lst2[-1])
# 通过下标索引访问序列中的值,序列的顺序是不能改变的,通过索引来定位列表的元素

lst3 = [1,2,3]
lst3 = lst3 * 3
print(lst3)
# 可随意变换列表长度,相当于随意指定新的列表

lst4 = [1,2,['a','b']]
# 可嵌套

lst5 = [100,101,102]
lst5[0]=10
print(lst5)
# 可原位改变

lst6_1 = [1,2,3]
lst6_2 = ['1','2','3']
print(type(lst6_1))
print(type(lst6_2))
lst6_3 = lst6_1 + lst6_2
print(lst6_3)
lst6_3.append('ok')
print(lst6_3)
3
143 43 43
[1, 2, 3, 1, 2, 3, 1, 2, 3]
[10, 101, 102]
<class 'list'>
<class 'list'>
[1, 2, 3, '1', '2', '3']
[1, 2, 3, '1', '2', '3', 'ok']

In [42]:

# 列表与生成器

print(range(5),type(range(5)))
# range()是生成器,是一个视图,指向了一个范围
# range(5)代表指向了0,1,2,3,4这几个值,生成的都是整数
# range(2,5)代表了指向2,3,4这几个值,,注意:这里不是使用
# range(0,10,2)代表指向0,2,4,6,8这几个值,最后一位2代表步长

lst = list(range(5))  
#通过list()函数生成列表
print(lst)

m = range(10)
print(m[2],m[5],m[-1])
# range可以索引
range(0, 5) <class 'range'>
[0, 1, 2, 3, 4]

In [45]:

# 可变列表list常用操作--添加元素
lst = list(range(10))
print(lst + [1,2,3])
print(lst)  #lst不变
lst.append(['a','b','c'])
print(lst) #append 改变lst的值,列表作为整体添加
lst.extend(['a','b','c'])
print(lst) #extend 改变lst的值,列表作为独立元素添加

a = [1,2,3]
b = [3,4,5]
a.append(b)
print(a)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ['a', 'b', 'c']]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, ['a', 'b', 'c'], 'a', 'b', 'c']
[1, 2, 3, [3, 4, 5]]

In [47]:

# 可变列表list常用操作--删除元素
lst = ['Jack','Jack','Tom','Tracy','Alex','White']
print(lst)
lst.remove('Jack')
print(lst)
# .remove方法:移除裂变中某个值的第一个匹配项

del lst[3:5]
print(lst)
# del 语句:删除list的相应索引值

lst.clear()
print(lst)
# .clear 移除所有
['Jack', 'Jack', 'Tom', 'Tracy', 'Alex', 'White']
['Jack', 'Tom', 'Tracy', 'Alex', 'White']
['Jack', 'Tom', 'Tracy']
[]

In [49]:

# 可变列表list常用操作--插入元素
lst = list(range(10))
print(lst)
lst.insert(3,'a')
print(lst)
# x.insert(i,m)方法:在索引i处插入m,这里索引3代表第四个值
lst.insert(5,[1,2,3])
print(lst)
#插入一个列表元素

lst1 = [1,2,3,4,5,6]
lst1.insert(0,'m')
print(lst1)

#按 shit + tab按键,显示函数的功能
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 'a', 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 'a', 3, [1, 2, 3], 4, 5, 6, 7, 8, 9]
['m', 1, 2, 3, 4, 5, 6]

In [51]:

# 可变列表list常用操作--复制
x = list(range(10)) 
print(x)
m = x
n = x.copy()
print(m)
x[2] = 101
print(x)
print(m)
print(n)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 101, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 101, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [54]:

# 可变列表list常用操作--排序
lst1 = list(range(10,20))
lst2 = ['a','d','b','c']
lst1.sort()
lst2.sort()
lst3 = lst2.copy()
lst3.sort(reverse=True)
print(lst1,lst2,lst3)
#.sort() 方法

lst4 =sorted(lst3)
print(lst3,lst4)
# sorted: 排序并赋值的函数
[10, 11, 12, 13, 14, 15, 16, 17, 18, 19] ['a', 'b', 'c', 'd'] ['d', 'c', 'b', 'a']
['d', 'c', 'b', 'a'] ['a', 'b', 'c', 'd']

In [57]:

# tuple, 不可变的“列表”

tup1 = ('physics','chemistry',1997,2000);
tup2 = (1,2,3,4,5);
tup3 = 'a','b','c'; #可以不加括号
tup4 = (50,)  # 元组中只包含一个元素时,需要在元素后面添加逗号

# del tup3() 
#元组不可以删除元素,但可以删除整个元组

print(tup1[2],tup3[:2])  #索引,切片,与list一样
print(tup1 + tup2)
print(tup1 * 3)
print(max(tup2),min(tup2))
#序列通用函数

# 元组不可做元素的添加,删除,排序
lst = list(range(10))
tup5 = tuple(lst)
lst5 = list(tup5)
#tuple函数,将列表转换为元组
print(tup5)
print(lst5)
1997 ('a', 'b')
('physics', 'chemistry', 1997, 2000, 1, 2, 3, 4, 5)
('physics', 'chemistry', 1997, 2000, 'physics', 'chemistry', 1997, 2000, 'physics', 'chemistry', 1997, 2000)
5 1
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

In [58]:

'''
1.2.3 文本序列str常用操作
字符串是Python中最常用的数据类型,我们可以使用引号('',"")来创建字符串
字符串也是序列,文本序列,不可变序列
'''

Out[58]:

'\n1.2.3 文本序列str常用操作\n字符串是Python中最常用的数据类型,我们可以使用引号(\'\',"")来创建字符串\n字符串也是序列,文本序列\n'

In [62]:

# 字符串引号

str1 = 'abc'
str2 = "abc"
str3 = 'My name is "Test"'
# 双引号单引号无区别,但文本中有引号的时候要相互交替使用

str4 = '''hello! how are you?
I`m fine, thank you'''
# 需要多行字符串时候要用三引号''','''
print(str1)
print(str2)
print(str3)
print(str4)
abc
abc
My name is "Test"
hello! how are you?
I`m fine, thank you

In [66]:

# 转义字符:\

print('\'','\"')  #\'  \": 分别输出单引号,双引号
print('hello\nhow do you do?')  # \n 空行
print('\\')  #输出\,所以文件路径常用/,或者\\
print("C:/User/Desktop")
print("C:\\User\\Desktop")
print(r"C:\User\Desktop")  # r 用于去转义,让括号里面的转义字符失效
' "
hello
how do you do?
\
C:/User/Desktop
C:\User\Desktop
C:\User\Desktop

In [69]:

#  字符串作为序列的通用功能

print('a' in 'abc')   # in/not in:判断是否存在
print('abc' + 'def')  #文本连接
print('abc' * 4)      #文本复制

st = 'abcdefg'
print(st[2],st[-1])
print(st[:2])
print(st[::2])
#索引,切片,步长

print(st.index('g'))  #.index()方法
print('st长度为:',len(st)) #计算字符串长度
print('st长度为:' + str(len(st))) #字符串连接
#print('st长度为:' + len(st)) # 字符串与数值不可连接,除非转换为字符串
True
abcdef
abcabcabcabc
c g
ab
aceg
6
st长度为: 7
st长度为:7

In [92]:

# 字符串常用功能

st1 = "i`m handsome"
st2 = st1.replace('handsome','ugly')
print(st1)
print(st2)
st3 = 'hahaha'
print(st3)
st4 = st3.replace('ha','he')
print(st4)
st5 = st3.replace('ha','he',2)  #只更换前两个
print(st5)

st = 'pie,32,2321,1.5432'
st6 = st.split(',')
print(st6)
# str.split(obj):拆分字符串,生成列表
# 拆分字符串很重要,爬虫,透过split分离为列表

lst = ['pie','32','2321','1.5432']
m = '-'
st = m.join(lst)
print(st)
# str.join(obj):连接字符串,对象为列表

st = 'abcdefg'
print(st.startswith('a'),st.endswith('f'))
# str.startswith("str")判断是否以“str”开头;# str.endswith("str")判断是否以“str”结尾

st = 'aBDEAddrdjjiex'
print(st.upper())  # 全部大写
print(st.lower())  #全部小写
print(st.swapcase()) #大小写互换
print(st.capitalize())#首字母大写

st = '1234567'
print(st.isnumeric()) #如果string只包含数字则返回True,否则返回False

st = 'asdsd'
print(st.isalpha()) #如果string只包含字母则返回True,否则返回False

st = '123   '
print(st.rstrip()) #删除字符末尾的空格
i`m handsome
i`m ugly
hahaha
hehehe
heheha
['pie', '32', '2321', '1.5432']
pie-32-2321-1.5432
True False
ABDEADDRDJJIEX
abdeaddrdjjiex
AbdeaDDRDJJIEX
Abdeaddrdjjiex
True
True
123

In [99]:

# 格式化字符:在字符串中插入变量

name = "FIREBIRD"
truth = "%s is 好人"%name
print(truth)
# %s表示我们这里需要插入一个变量(字符串),%name代表这里插入name,所以,两个%解决问题

x = 4
y = "hehe"
z = 4.2
print("this is %i"%x)
print("this is %s"%y)
print("this is %f"%z)
# %s,%z,%f 都是格式化字符串,s/i/f分别代表插入字符串的源数据类型:整型/字符型/浮点型
FIREBIRD is 好人
this is 4
this is hehe
this is 4.200000

In [113]:

# 格式化字符:数字格式化的那些坑

m = 3.1415926
print("pi is %f"%m)
print("pi is %.2f"%m)  #保留2位小数%.2f,此处是四舍五入

m = 10.6
print("pi is %i"%m)  #%i 不会四舍五入,直接切去小数部分
print("pi is %.0f"%m) # %.0f 会进行四舍五入

m = 100
print("pi is %+i"%m)  #显示正号,符号根据数字直接显示
print("pi is %.2f"%-0.01)

m = -100
print("pi is %+i"%m)  #显示正号,符号根据数字直接显示
print("pi is %.2f"%0.01)

m = 100
print("pi is % +i"%m)  
print("pi is % .2f"%0.01)
#加空格,空格和正号只能显示一个

m = 123.123223212324222322
print("pi is %2e"%m)  
print("pi is %4E"%m)
#科学计数法,%e,%E

m1 = 12312434322.123223212324222322
m2 = 1.2
print("pi is %g"%m1)  
print("pi is %g"%m2)
print("pi is %.2g"%m1)
#%g:当小数位比较少的时候用用浮点数,数据复杂的时候用科学计数法
# %.2g:用两个有效位数
pi is 3.141593
pi is 3.14
pi is 10
pi is 11
pi is +100
pi is -0.01
pi is -100
pi is 0.01
pi is +100
pi is  0.01
pi is 1.231232e+02
pi is 1.231232E+02
pi is 1.23124e+10
pi is 1.2
pi is 1.2e+10

In [129]:

# 更强大的格式化方法:format

print("User ID:{0}".format("root"))
print("今天天气怎么样:{}".format("非常好"))
st = "您好!{}"
print(st.format("谢谢"))
print("{} hehe {}".format("a","b"))
# {}这里代表占位符,其中可以有数字,也可以没有

print("{}{}{}".format("a","b","c"),'\n',
      "{0}{1}{2}{0}".format('a','b','c'),'\n')
#print("{}{}{}".format('a','b','c'))
#{}和{0}的区别:都是占位符,后者有了明确指定

print("我的工作是{work}".format(work = 'Design'))
# 也可以用变量来指示

x = "abc{}"
a = x.format("def")
print(a,x,'\n')
# .format()并不生成新的值

print("{:f}".format(4,123),'\n',
     "{:.2f}".format(4,123),'\n',
      "{:e}".format(4,123),'\n',
      "{:.0f}".format(99.9),'\n',
      "{:%}".format(4,123),'\n',
      "{:d}".format(10),'\n')

print("今年产值增长了%.2f%%"%10.321)  #添加百分号
print("今年产值增长了{:.2%}".format(10.321))  #添加百分号
User ID:root
今天天气怎么样:非常好
您好!谢谢
a hehe b
abc 
 abca 

我的工作是Design
abcdef abc{} 

4.000000 
 4.00 
 4.000000e+00 
 100 
 400.000000% 
 10 

今年产值增长了10.32%
今年产值增长了1032.10%
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值