【python | linux 01】《字符和列表》其实就是这么简单~~~

简介: 在python3中input 获取的数据,都以字符串的方式进行保存,即使输入的是数字,那么也是以字符串方式保存判断密码是否正确
  🍁作者简介:大家好,我是小鹏linux,运维领域创作者,🏅[阿里云ACE认证高级工程师](https://blink.csdn.net/details/1342064?spm=1001.2014.3001.5501)🏅
  ✒️个人主页:[小鹏linux](https://blog.csdn.net/qq_62294245?spm=1000.2115.3001.5343)。
  🫀格言:你未必出类拔萃,但一定与众不同!🔥

💊个人社区:小鹏linux欢迎您的加入!

在这里插入图片描述
@[TOC]

1.字符串

字符串表现形式

a = "100"
b = "hello world"
c = 'hello world'
d = '100'
e = ‘18.20520'

1.1len函数返回对象的长度或者个数

Python len( )方法返回对象(字符、列表、元组、字典等)长度或项目个数。

In [1]: a="abcdefg"
In [2]: len(a)
Out[2]: 7
In [3]: b = [1,2,3,4,5,66,77,8888]
In [4]: len(b)
Out[4]: 8

1.2组成字符串的另外一种方式:

字符串会拼接,数字会相加

In [5]: a ="lao"
In [6]: b="wang"
In [7]: c=a+b
In [8]: c
Out[8]: 'laowang'
In [9]: d= "===="+a+b+"===="
In [10]: d
Out[10]: '====laowang===='
In [11]: f="===%s===="%(a+b)
In [12]: f
Out[12]: '===laowang===='

2.字符串的输入输出

2.1字符串输入

输入信息

name = input(“ 请输入你的姓名:”)
position = input(“ 请输入你的职业:”)
address = input(“ 请输入你的地址:”)

输出信息

print("="*50)
print(" 姓名:%s\n 职业:%s\n 地址:%s" % (name,position,address))
print("="*50) 

2.2format的使用语法:

格式化的方式展示数据,并可以通过多种方式展示数据。如 通过位置、通过关键字参数、通过映射list。

 #>1.通过位置
print("my name is {0},age is {1}".format('刘备',20))
print("my name is {},age is {}".format('刘备',20))
print("{1},{0},{1}".format('刘备',20))
#2.通过关键字参数
print("{age},{name}".format(age=28,name="曹操"))
print("{name},{name},{age}".format(age=28,name="曹操"))
#3.通过映射list
alist = ["孙权",20,"中国"]
blist = ["貂蝉",18,"中国"]
print("my name is {1[0]}, from {0[2]}, age is {0[1]}".format(alist,blist))

在python3中input 获取的数据,都以字符串的方式进行保存,即使输入的是数字,那么也是以字符串方式保存

判断密码是否正确

user_name = input(“ 请输入用户名:”)
password = input(“ 请输入密码:”)
if user_name == “beijing” and password == “123” :
print(“ 欢迎登录北京官网!")
else :
print(" 你的账户或者密码错误!") 

2.3下标介绍

下标索引 index
所谓“下标”,就是编号,就好比超市中的存储柜的编号,通过这个编号就能找到相应的存储空间。
通过下标取出部分字符
如果有字符串:name = 'abcdef',在内存中的实际存储如下:
在这里插入图片描述

> In [1]: len(name) 
> Out[1]: 7 
> In [2]: name[len(name)-1] 
> Out[2]: 'g' 
> In [3]: name[-1] 
> Out[3]: 'g' 正数从左往右,负数从右往左

2.4切片

切片是指对操作的对象截取其中一部分的操作。字符串、列表、元组都支持切片操作。
切片的语法:[ 起始: 结束: 步长]
注意:选取的区间属于 左闭右开型,即从"起始"位开始,到"结束"位的前一位结束(不包含结束位本身),注意,如果不写步长默认是1.
步长是控制方向的,正数从左往右取,负数是从右到左取

In [1]: name="abcdefABCDEF"
In [2]: name[0:3]
Out[2]: 'abc'
In [3]: name[0:5:2]
Out[3]: 'ace'
In [4]: name[-1::-1]                  #逆序(倒叙)
Out[4]: 'FEDCBAfedcba'

下标和切片小结
[:] 提取从开头(默认位置0)到结尾的整个字符串
[start:] 从start 提取到结尾
[:end] 从开头提取到end - 1
[start:end] 从start 提取到end - 1
[start:end:step] 从start 提取到end - 1,每step 个字符提取一个
[::-1]逆序

3.字符串常见函数

find()、 rfind ()、 index ()、 rindex ()、 replace ()、split ()、parttion ()、rparttion ()、splitlines ()、startswith ()、endswith ()、lower ()、upper ()、…………

3.1find及rfind

In [1]: mystr="hello world yanzilu and yanziluPython"
In [2]: mystr
Out[2]: 'hello world yanzilu and yanziluPython
In [3]: mystr.find("and")
Out[3]: 20
In [4]: mystr.find("world")          #存在则返回该单词开始的下标
Out[4]: 6
In [5]: mystr.find("world1")         #不存在则返回-1
Out[5]: -1
In [6]: mystr.find("yanzilu")
Out[6]: 12
In [7]: mystr.find("yanzilu",20,len(mystr)) #指定查找区域
Out[7]: 24
In [8]: mystr.rfind("yanzilu")      #rfind,从右往左搜索
Out[8]: 24

3.2index 、rindex

作用和find一样,只有一点不同,index搜索不到的内容会报错

In [9]: mystr.index("and") 
Out[9]: 20
In [10]: mystr.index("yanzilu")
Out[10]: 12
In [11]: mystr.index("yanzilu",20,len(mystr))     #指定查找区域
Out[11]: 24
In [12]: mystr.rindex("yanzilu")                 #从右往左搜索
Out[12]: 24
In [13]: mystr.rindex("zhangsan")                  #搜索不存在的会报错
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-67-6aff7ee60ad5> in <module>
----> 1 mystr.rindex("zhangsan")
ValueError: substring not found

3.3 replace 替换

In [14]: mystr
Out[14]: 'hello world yanzilu and yanziluPython'
In [15]: mystr.replace("world","WORLD")
Out[15]: 'hello WORLD yanzilu and yanziluPython'
In [16]: mystr
Out[16]: 'hello world yanzilu and yanziluPython'
In [17]: mystr.replace("yan","zhang")
Out[17]: 'hello world zhangzilu and zhangziluPython'
In [18]: mystr.replace("yan","zhang",1)          #指定替换次数
Out[18]: 'hello world zhangzilu and yanziluPython'
In [19]: mystr.replace("yan","xxx",1)
Out19]: 'hello world xxxzilu and yanziluPython'
In [20]: mystr.replace("yan","xxx",2)
Out[20]: 'hello world xxxzilu and xxxziluPython'
In [21]: mystr.replace("yan","xxx",33)             #替换次数可以超过最大值
Out[21]: 'hello world xxxzilu and xxxziluPython'

3.4split,作用分割,切割 ,语法:split(str=' ',maxsplit)

In [22]: mystr
Out[22]: 'hello world yanzilu and yanziluPython'
In [23]: mystr.split(" ")
Out[23]: ['hello', 'world', 'yanzilu', 'and', 'yanziluPython']
In [24]: mystr.split("and")
Out[24]: ['hello world yanzilu ', ' yanziluPython']
In [25]: mystr.split(" ",3)
Out[25]: ['hello', 'world', 'yanzilu', 'and yanziluPython']
In [26]: mystr.split()
Out[26]: ['hello', 'world', 'yanzilu', 'and', 'yanziluPython']

3.5 partition , 把mystr 以str分割成三个部分,str前,str自身,str后

In [27]: mystr
Out[27]: 'hello world yanzilu and yanziluPython'
In [28]: mystr.partition("and")
Out[28]: ('hello world yanzilu ', 'and', ' yanziluPython')
In [29]: mystr.partition("yanzilu")
Out[29]: ('hello world ', 'yanzilu', ' and yanziluPython')
In [30]: mystr.rpartition("yanzilu")
Out[30]: ('hello world yanzilu and ', 'yanzilu', 'Python')

3.6splitlines作用,按照行进行分割,返回一个包含各行作为元素的列表

In [31]: mystr1
Out[31]: 'hello\nworld\nyanzilu\nand\nyanziluPython'
In [32]: mystr1.splitlines()
Out[32]: ['hello', 'world', 'yanzilu', 'and', 'yanziluPython']

3.7 startswith () 判断是否以str开头; endswith () 判断是否以str结尾。

In [33]: mystr
Out[33]: 'hello world yanzilu and yanziluPython'
In [34]: mystr.startswith("hello")
Out[34]: True
In [35]: mystr.startswith("Hello")
Out[35]: False
In [36]: mystr.startswith("h")
Out[36]: True
In [37]: mystr.endswith("Pthon")
Out[37]: False
In [38]: mystr.endswith("Python")
Out[38]: True

3.8upper将所有字母转换为大写; lower将所有字母转换为小写。

In [39]: mystr.upper()。
Out[39]: 'HELLO WORLD YANZILU AND YANZILUPYTHON'
In [40]: mystr.lower()  
Out[40]: 'hello world yanzilu and yanzilupython'

3.9center给字符串两边添加空格,居中显示

In [41]: mystr = "那一夜我伤害了你"
In [42]: mystr = mystr.center(30)  
In [43]: mystr
Out[43]: '           那一夜我伤害了你           

3.10 lstrip删除字符串左边的空格

In [44]: mystr.lstrip()
Out[44]: '那一夜我伤害了你     

3.11rstrip删除字符串右边的空格

In [45]: mystr.rstrip()
Out[45]: '           那一夜我伤害了你'  

3.12 strip删除字符串两边的空格

In [46]: mystr.strip()
Out[46]: '那一夜我伤害了你'

3.13isspace判断是否只包含空格

In [47]: mystr.isspace()
Out[47]: False
In [48]: mystr = "    "
In [49]: mystr.isspace()
Out[49]: True

3.14salpha判断字符串中是否只包含字母

In [50]: mystr = "abc" 
In [51]: mystr.isalpha()
Out[51]: True
In [52]: mystr = "abc1"
In [53]: mystr.isalpha()
Out[53]: False

3.15isdigit判断是否只包含数字。

In [54]: mystr = "123123"
In [55]: mystr.isdigit()
Out[55]: True
In [56]: mystr = "123123aa"
In [57]: mystr.isdigit()
Out[57]: False

3.16isalnum判断是否只包含数字和字母。

In [58]: mystr.isalnum()
Out[58]: True
In [59]: mystr = "123123 aa"
In [60]: mystr.isalnum()
Out[60]: False

3.17title将每个单词的首字母大写,其余小写

In [61]: mystr = 'hello world yanzilu and yanziluPython'
In [62]: mystr.title()
Out[63]: 'Hello World Yanzilu And Yanzilupython'

3.18capitalize将字符串的第一个字符大写,其余小写

In [64]: mystr.capitalize()
Out[64]: 'Hello world yanzilu and yanzilupython'

3.19count统计单词出现的次数

In [65]: mystr.count("hello")
Out[65]: 1
In [66]: mystr.count("yan")
Out[66]: 2

3.20join在每个字符后面插入str,构造出一个新的字符串。

In [67]: mystr = " "
In [68]: name
Out[68]: ['hello', 'world', 'yanzilu', 'and', 'yanziluPython']
In [69]: mystr.join(name)
Out[69]: 'hello world yanzilu and yanziluPython'
In [70]: mystr = "_"
In [71]: mystr.join(name)
Out[71]: 'hello_world_yanzilu_and_yanziluPython'

4.列表及循环遍历

4.1列表的格式

#变量names_list的类型为列表
names_list = [' 刘备',' 曹操',' 孙权'] 
#打印多个姓名
names_list = [' 刘备',' 曹操',' 孙权']
print(names_list[0])
print(names_list[1])
print(names_list[2]) 
names = [' 刘备',' 曹操',' 孙权'] 
for x in names
    print(x)
i=1
while i<len(names)
print(name[i])
i+=1

5.列表的增删改查:

列表中存放的数据是可以进行修改的,比如"增"、"删"、"改"

5.1列表的添加元素("增"append, extend, insert)

append可以向列表添加元素
extend将另一个集合中的元素逐一添加到列表中
insert在指定位置index前插入元素

name=[“刘备” , ”曹操” , ”孙权”]
print(“增加之前:”,name)
info=[“黄忠” , ”魏延”]    

append追加

names.append("吕布")
names.append("貂蝉")
names.append(info)                     #append把中括号也增加上了
print("增加之后:",names)

使用extend合并列表

info = ["黄忠","魏延"]
names.extend(info)
print("增加之后:",names)

insert在指定位置前插入元素

names.insert(0,"刘禅")
print("增加之后:",names)

5.2删除元素 (" 删 "del, pop, remove)

del根据下标进行删除
pop删除最后一个元素
remove根据元素的值进行删除

names = ['刘备', '曹操', '孙权', '吕布', '貂蝉', '黄忠', '魏延']
print("删除前:",names)

5.3del指定下标删除

del names[1]
print("del删除后:",names)

5.4使用pop删除最后一个元素

names.pop()
names.pop()
print("pop删除后:",names)

5.5使用remove根据元素值进行删除

name = input("请输入您要删除的历史人物:")
names.remove(name)
print("remove删除后:",names)

5.6列表的修改

通过下标修改元素 (" 改 ")

names = ["刘备","曹操","孙权"]
names[0] = "刘禅"
print(names)

5.7查找元素("查"in, not in, index, count)

python中查找的常用方法为:
in (存在), 如果存在那么结果为True ,否则为False
not in (不存在),如果不存在那么结果为True ,否则False
index和count与字符串中的用法相同

names = ['刘备', '曹操', '孙权', '吕布', '貂蝉', '黄忠', '魏延',"曹操"]
findName = input("请输入您要查找的姓名:")
if findName in names:
    print("已经找到:%s"%findName)
else:
    print("没有找到:%s"%findName)
In [1]: names = ['刘备', '曹操', '孙权', '吕布', '貂蝉', '黄忠', '魏延',’曹操’]
In [2]: name.index(“曹操”)
Out[2]:1
In [3]: name.index(“曹操”,2,leb(names))
Out[3]:7
In [4]: name.count(“曹操”)
Out[4]:2

6.排序(sort, reverse)

sort方法是将list按特定顺序重新排列,默认为由小到大(True:从小到大;False从大到小)
reverse=True可改为倒序,由大到小。
reverse方法是将list逆置。需要先排序再降序

7.列表嵌套

类似while循环的嵌套,列表也是支持嵌套的一个列表中的元素又是一个列表,那么这就是列表的嵌套
示例:

school_names = [
[' 北京大学',' 清华大学'],
[' 南开大学',' 天津大学'],
[' 贵州大学',' 青海大学']
]
print(school_names) 
#print(school_names)
#print(len(school_names))
#print(school_names[2][1])
for school in school_names:
    print("="*30)
    print(school)
    for name in school:
        print(name)

8.列表嵌套的应用- - 随机安排老师工位

一个学校,有3个办公室,现在有8位老师等待工位的分配,请编写程序,完成随机的分配

import random
offices = [[ ],[ ],[ ]]
names = ['刘备', '曹操', '孙权', '吕布', '貂蝉', '黄忠', '魏延','大乔']
for office in offices:
    #得到一个教师的下标
    index = random.randint(0,len(names)-1)
    #分配老师
    name = names[index]
    office.append(name)
    #要移除已经完成分配的老师
    names.remove(name)
for name in names:
    #得到办公室编号
    index = random.randint(0,2)
    offices[index].append(name)
#print(offices)
#打印出来哪些办公室有哪些老师
i= 1
for office in offices:
    #office = ["刘备","曹操"]
    print("办公室%s : 共%s人"%(i,len(office)))
    i+=1
    for name in office:
        print("%s"%name,end="\t\t")
    print()
    print("="*30)

👑👑👑结束语👑👑👑

为大家推荐一款刷题神奇 点击链接访问牛客网

各大互联网大厂面试真题。基础题库到进阶题库等各类面试题应有尽有!

牛客网面经合集,满足大厂面试技术深度,快速构建Java核心知识体系大厂面试官亲授,备战面试与技能提升,主要考点+主流场景+内功提升+真题解析
在这里插入图片描述

目录
相关文章
|
13天前
|
Linux 开发工具 Perl
在Linux中,有一个文件,如何删除包含“www“字样的字符?
在Linux中,如果你想删除一个文件中包含特定字样(如“www”)的所有字符或行,你可以使用多种文本处理工具来实现。以下是一些常见的方法:
37 5
|
11天前
|
Python
探索Python中的列表推导式
【10月更文挑战第38天】本文深入探讨了Python中强大而简洁的编程工具——列表推导式。从基础使用到高级技巧,我们将一步步揭示如何利用这个特性来简化代码、提高效率。你将了解到,列表推导式不仅仅是编码的快捷方式,它还能帮助我们以更加Pythonic的方式思考问题。准备好让你的Python代码变得更加优雅和高效了吗?让我们开始吧!
|
13天前
|
人工智能 Shell 开发工具
[oeasy]python0041_输出ASCII码表_英文字符编码_键盘字符_ISO_646
本文介绍了ASCII码表的生成与使用,包括英文字符、数字和符号的编码。通过Python代码遍历0到127的ASCII值,解决了找不到竖线符号的问题,并解释了ASCII码的固定映射关系及其重要性。文章还介绍了ASCII码的历史背景,以及它如何成为国际标准ISO 646。最后,通过安装`ascii`程序展示了完整的ASCII码表。
12 1
|
25天前
|
缓存 监控 Linux
Python 实时获取Linux服务器信息
Python 实时获取Linux服务器信息
|
29天前
|
Python
探索Python中的列表推导式
【10月更文挑战第20天】在编程世界里,时间就是一切。Python的列表推导式是节约时间、简化代码的一大利器。本文将带你深入理解并有效利用这一强大工具,从基础到高级用法,让你的代码更加简洁高效。
|
29天前
|
Python
SciPy 教程 之 SciPy 模块列表 6
SciPy教程之常量模块介绍:涵盖公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率及力学单位。示例展示了角度单位转换为弧度的几个常用常量。
20 7
|
29天前
|
Python
SciPy 教程 之 SciPy 模块列表 7
`scipy.constants` 模块提供了常用的时间单位转换为秒数的功能。例如,`constants.hour` 返回 3600.0 秒,表示一小时的秒数。其他常用时间单位包括分钟、天、周、年和儒略年。
18 6
|
26天前
|
Python
SciPy 教程 之 SciPy 模块列表 13
SciPy教程之SciPy模块列表13:单位类型。常量模块包含多种单位,如公制、二进制(字节)、质量、角度、时间、长度、压强、体积、速度、温度、能量、功率和力学单位。示例代码展示了如何使用`constants`模块获取零摄氏度对应的开尔文值(273.15)和华氏度与摄氏度的转换系数(0.5556)。
18 1
|
27天前
|
弹性计算 安全 数据处理
Python高手秘籍:列表推导式与Lambda函数的高效应用
列表推导式和Lambda函数是Python中强大的工具。列表推导式允许在一行代码中生成新列表,而Lambda函数则是用于简单操作的匿名函数。通过示例展示了如何使用这些工具进行数据处理和功能实现,包括生成偶数平方、展平二维列表、按长度排序单词等。这些工具在Python编程中具有高度的灵活性和实用性。
|
28天前
|
Python
SciPy 教程 之 SciPy 模块列表 9
SciPy教程之常量模块介绍,涵盖多种单位类型,如公制、质量、角度、时间、长度、压强等。示例展示了如何使用`scipy.constants`模块查询不同压强单位对应的帕斯卡值,包括atm、bar、torr、mmHg和psi。
15 1
下一篇
无影云桌面