python字符串序列类型字典的基础运用

一.字符串的应用

1.查找字符串里的单个字符
其中的字符串,可以理解为一个数组,从开始的第一个字符可以视为数组的第一个元素。这样就可以使用s[i]来表示串中的字符位置(从0到i依次查找),应为python是从左到右的顺序识别的,而s[-1]的话,就反过来,找最后一个字符。同意s[-2]是右边的第2个字符。

s1 = 'This is string'
s2 = "This is a dog"
print(s1,s2)
print(s1[0])
print(s2[-1])

结果

This is string This is a dog
T
g

2.slice:字符串的“切片”。查找连续的几个字符,或者字符串中的一段字符串.也是类比数组查询:s[0:i] .查询字符串的第一个第i-1个字符。
注意:这个的切片区间 [ ] 是左闭右开类型。eg:

s = "python_learning"
print(s[0 : 3])

运行结果是:pyt ;在这里,依然可以查找单个字符的方法去给切片定位,从左到右是0到i,从右到左是-1到 -i.

s = "python_learning"
print(s[0 : 3])
print(s[0 : -1])
print(s[0 : -3])
print"1"print(s[-1:-3])
print(s[-3:-1])

运行结果:

pyt
python_learnin
python_learn
1

in

“python_learning”是15个字符,0到-3是打印从第一个字符到最后一个字符减3的字符串,而为什么[-3 :-1] 就不行呢?
因为python是从左到右识别的,如果-1到-3就是从最后减1个字符到减3个字符,但程序只走一遍。从左到右,所以只要定位的第一个位置在第二个位置后面,这就无效。
也可以这样写:s[ : ]查找全部 ; “:”号左右,左边不填就代表从0 ,右边不填就代表到最后一个。

print(s[ : 6])
print(s[ : ])   

运行结果:

python
python_learning

除此之外,slice切片还具有按位查找的方式 print(s[ x1 : x2 : x3]) 从x1到x2中每隔x3位取一个字符

print(s[0 : 8 : 2])    
print(s[0 : 9 : 3])

运行结果:

pto_
ph_

3.获取长度: length = len(s)

  1. 删除标记字符,并使其分裂。在一个列表中显示出来。string.split(‘’) ;
s = "python_learning"
string = 'C: \ Users \ Administrator \ Desktop'
print(s.split('_'))
print(string.split(" \ "))

运行结果:

['python', 'learning']
['C:', 'Users', 'Administrator', 'Desktop']

5.删除字符 string.strip() 括号里填上需要删除的字符或者字符串

s = "python_learning"
print(s.strip('p'))
print(s.strip('python'))

运行结果:

ython_learning
_learning

注意:在所有string字符串操作的函数,都是以string.函数名的方式进行运行。

二.序列类型的运用

1.list列表
像 a = [x1, x2, x3,…,xn] 这类的就是列表,在python在,代码相对比其他代码来说,很灵活。就是len求长度的公式,直接在print(len(a)).
列表也可以进行加法和乘法,得到的是一个新的大列表。

a = [1, 2, 3, 4]
b = [9, 8, 7, 6]

print(len(a))
print(a + b)
print(a * 2)
print(a * b)

运行结果:

4
[1, 2, 3, 4, 9, 8, 7, 6]
[1, 2, 3, 4, 1, 2, 3, 4]
Traceback (most recent call last):
  File "G:/Python/wenjian/lesson_1/if.py", line 7, in <module>
    print(a * b)
TypeError: can't multiply sequence by non-int of type 'list'

报错:列表不能乘以非整数的‘list’类型,简单说就是不支持这种乘法操作,只能乘以整数。

(1) 同样,列表有和字符串相似的地方,也可以查询列表内的数据,对列表里的数据进行index检索。
还可以sliceqie切片进行查找。

a = [1, 2, 3, 4]
print(a[0])
print(a[-1])
print(a[0 : 2])
print(a[0 : 4 : 2])   #同上,打印第1位到底4位的(可以理解为数组0到3)列表元素,并每隔2位取1一个元素

运行结果:

1
4
[1, 2]
[1, 3]

(2)list列表的增加和删除
list.append(x) 在列表后面增加一个元素;list.insert(x1,x2) 在列表第X1-1(数组思维,第一个元素从0开始)位,增加X2这个元素

a = [1, 2, 3, 4]
a.append(4)
print(a)
a.insert(3, 6)
print(a)

运行结果:

[1, 2, 3, 4, 4]
[1, 2, 3, 6, 4, 4]

list.pop(x) 删除列表的第x-1位的元素 list.remove(x) 删除列表中的X元素

a = [1, 2, 3, 4]
a.pop(0)
print(a)
a.insert(0,1)
print(a)
a.remove(2)
print(a)

运行结果:

[2, 3, 4]
[1, 2, 3, 4]
[1, 3, 4]

(3)列表的嵌套
在列表内,一个列表可以嵌套一个列表的。eg a = [1, 2, 3, [‘pig’, ‘dog’, 4]]
那么如何让他打印出来呢?是不是也像C语言中的二维数组一样的模拟呢?

a = [1, 2, 3, ['pig', 'dog', 4]]

print(a[1])
print(a[3][0])   # 查找a列表的第4个列表元素的第1个元素
print(a[3][2])
c = a[3]
print(c[1])     #也可以像C语言那样,让它等价。
print(c[-1])

运行结果:

2
pig
4
dog
4

从代码中看的出,可以像理解C语言中的二维数组的方式去对他进行理解和操作。

(4)str.index(str, beg=0, end=len(string)) 字符串内检索
str – 指定检索的字符串
beg – 开始索引,默认为0。
end – 结束索引,默认为字符串的长度。
返回值:如果包含子字符串返回开始的索引值,否则抛出异常。

a ="My name is xxx"
b = "Mynameisxxx"
print (a.index('xxx'))
print(b.index('xxx'))
c = 'name'
length = int(len(a))
print(a.index(c, 0, length));

运行结果:

11
8
3

(5)元组tuple的打包和解包使用单星号(*),字典dictionary的打包和拆解使用(**)

a, *b, c = [1, 2, 'a', [3, 4], 100]
print(a)
print(b)
print(c)

运行结果:

1 [
2, 'a', [3, 4]]
100

b是可以打印多个任意的非关键字参数,并将收集到的参数转换成一个元组。
同样,如果传参数进入子函数,那么(
)可以解压传送的参数。

(6)复制一个列表
如果是直接赋值

a = [0, 1, 2, 3, 4]
b = a
b[0] = 88
print(b)
print(a)

运行结果:

[88, 1, 2, 3, 4]
[88, 1, 2, 3, 4]

因为a,b指向的是同一块内存。改变b,a就会改变。
所以我们用slice切片的形式来进行赋值,将他从新切割成一个新的列表。

a = [0, 1, 2, 3, 4]
b = a[ : ]
b[0] = 88
print(b)
print(a)

运行结果:

[88, 1, 2, 3, 4]
[0, 1, 2, 3, 4]

2.range范围函数

a = list(range(10))
print(a)

b = list(range(0,10,2))
print(b)

运行结果:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 6, 8]

可以看到,range是按顺序从0-n去除n+1个数。range(n)
同样,range还具有筛选的功能,比如上面,就删去0-10所有的奇数。
range(x1,x2,c) 是从x1到x2的数中,每隔C位取一个数。

3.元组tuple
元组是用()表示,eg: tuple = (1, 2, 3)
元组类型是定义后,下面任何修改元组元素都将无效。就像C语言的const。只能访问,不能进行修改。

a = (1, 2, 3)
print(type(a))
print(a[0])
a[1] = 4
print(a[1])

运行结果:

Traceback (most recent call last):
  File "G:/Python/wenjian/lesson_1/if.py", line 6, in <module>
    a[1] = 4
TypeError: 'tuple' object does not support item assignment   #tuple元组不支持他的元素赋值
<class 'tuple'>
1

三.dictionary字典类型

dictionary是基于相互含义对应并且元素一样的两个或者两个以上的列表储存的数据。

key = ['name', 'from','high']    
	  value=['xiaoming', 'china','178']
	  string = value[key.index('from')]
	  print(string)

这是用index函数实现的。基于这个变幻,我们可以引入键值对 key : value。也是我们的字典类型,就可以理解为C语言的结构体。
dictionary = {x1, x2, x3, x4, x5,… , xn } 字典类型是用{}括号表示。

d = {"old" : "18", "sex" : "gril", "wight" : "50", "hight" : 175}
print(type(d))
print(d["old"])
print(d["hight"])

d["old"] = 15    #更改数据
print(d)

d["name"] = "Zhang"  #添加数据,不过是在最后就添加
print(d)
d[3] = 5
print(type(d[3]))
d.pop("old")
print(d)

d.pop(3)    #删除数据
print(d)

运行结果:

<class 'dict'>
18
175
{'old': 15, 'sex': 'gril', 'wight': '50', 'hight': 175}
{'old': 15, 'sex': 'gril', 'wight': '50', 'hight': 175, 'name': 'Zhang'}
<class 'int'>
{'sex': 'gril', 'wight': '50', 'hight': 175, 'name': 'Zhang', 3: 5}
{'sex': 'gril', 'wight': '50', 'hight': 175, 'name': 'Zhang'}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中的字符串是一个由字符组成的序列,用单引号或者双引号括起来即可。字符串是不可变的,也就是说一旦创建就无法更改。可以使用索引和切片来访问字符串中的特定字符或子串,并且也提供了一些内置方法来操作字符串,如拼接、查找、替换等。 列表是一个有序的集合,可以包含不同类型的元素。列表是可变的,可以通过索引来访问和修改其中的元素。可以使用一些内置方法对列表进行增、删、改、查等操作。列表还支持切片操作,可以实现对列表的部分元素进行截取和复制。 字典是无序的键值对集合,每个元素由一个键和一个值组成,键和值之间用冒号分隔,键和值可以是任意类型的数据。字典是可变的,并且具有高效的查找和插入操作。可以通过键来访问和修改字典中的对应值,也可以使用一些内置方法对字典进行增、删、改、查等操作。 元组是一种不可变的有序集合,可以包含不同类型的元素。与列表相比,元组更加轻量级和高效,因为元组的元素不能修改,所以在不需要修改元素的情况下,建议使用元组代替列表。可以使用索引来访问元组中的元素,也可以使用内置方法对元组进行查找。 总之,字符串、列表、字典和元组是Python中常用的数据类型,分别用于表示文本、有序集合、键值对和不可变有序集合。在实际的编程中,根据具体的需求选择适合的数据类型,可以更加高效地处理数据。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值