ホームページ >バックエンド開発 >Python チュートリアル >Pythonの文字とリストを簡単に学ぶ(詳細な例)

Pythonの文字とリストを簡単に学ぶ(詳細な例)

WBOY
WBOY転載
2022-05-25 13:49:162900ブラウズ

この記事では、python に関する関連知識を提供します。主に、文字列の入出力、リスト ループのトラバーサル、リストの追加など、文字とリストに関連する問題を紹介します。削除、変更について見てみましょう。 、リストの入れ子など、皆さんのお役に立てれば幸いです。

Pythonの文字とリストを簡単に学ぶ(詳細な例)

推奨学習: Python ビデオ チュートリアル

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]: 7In [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. 文字列入力とOutput

2.1 String input

入力情報

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

出力情報

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

2.2フォーマット使用構文:

データを書式設定して表示し、さまざまな方法でデータを表示できます。位置、キーワード パラメータ、マッピング リストなど。

1. 位置別
print("私の名前は {0}、年齢は {1}".format('劉備',20))
print("私の名前は {}、年齢は {}".format('劉備',20))
print("{1},{0},{1}".format('劉備',20))
2. キーワードパラメータを通じて
print("{age},{name}".format(age=28,name="Cao Cao"))
print("{name},{name} ,{age }".format(age=28, name="曹操"))
3. マッピングリストを通して
alist = ["孫権", 20, "中国"]
blist = ["貂蝉", 18,"中国"]
print("私の名前は {1[0]}、出身地は {0[2]}、年齢は {0[1]}".format(alist, blist))

python3で入力して得られたデータは文字列形式で保存されますが、入力が数値であっても文字列形式で保存されます。

パスワードが正しいかどうかを確認する

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

2.3 サブスクリプトの概要

サブスクリプト インデックス インデックス

いわゆる「サブスクリプト」は、スーパーマーケットの保管キャビネットの番号と同様に、対応する保管スペースを見つけることができる番号です。
添字を使用して文字を取得します。
name = 'abcdef' という文字列がある場合、メモリ内の実際のストレージは次のとおりです。

Pythonの文字とリストを簡単に学ぶ(詳細な例)

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:] 抽出します。先頭から末尾まで
[:end] 先頭から末尾まで抽出 - 1
[start:end] 先頭から末尾まで抽出 - 1
[startstep] 先頭から末尾まで抽出 - 1 、ステップごとに 1 文字を抽出
[::-1] 逆順

3. 共通の文字列関数

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

3.1 find と 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]: 20In [4]: mystr.find("world")  		#存在则返回该单词开始的下标Out[4]: 6In [5]: mystr.find("world1") 		#不存在则返回-1Out[5]: -1In [6]: mystr.find("yanzilu")Out[6]: 12In [7]: mystr.find("yanzilu",20,len(mystr)) #指定查找区域Out[7]: 24In [8]: mystr.rfind("yanzilu")  	#rfind,从右往左搜索Out[8]: 24

3.2index、rindex

は find と同じ機能を持ちますが、1 つ違いがあります。コンテンツがインデックスで検索できない場合は、エラーが報告されます

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

3.3 replace 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 パーティション、mystr を str の前、str 自体、str の後、3 つの部分に分割します
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 beginswith () は str で始まるかどうかを決定し、endswith () は str で終わるかどうかを決定します。
In [33]: mystr
Out[33]: 'hello world yanzilu and yanziluPython'In [34]: mystr.startswith("hello")Out[34]: TrueIn [35]: mystr.startswith("Hello")Out[35]: FalseIn [36]: mystr.startswith("h")Out[36]: TrueIn [37]: mystr.endswith("Pthon")Out[37]: FalseIn [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]: FalseIn [48]: mystr = "    "In [49]: mystr.isspace()Out[49]: True

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

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

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

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

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

In [58]: mystr.isalnum()Out[58]: TrueIn [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]: 1In [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=1while i<len><h2>5.列表的增删改查:</h2>
<p>列表中存放的数据是可以进行修改的,比如"增"、“删”、“改”</p>
<h3><strong>5.1列表的添加元素("增"append, extend, insert)</strong></h3>
<p>append可以向列表添加元素<br> extend将另一个集合中的元素逐一添加到列表中<br> insert在指定位置index前插入元素</p>
<pre class="brush:php;toolbar:false">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]:1In [3]: name.index(“曹操”,2,leb(names))Out[3]:7In [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= 1for 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)

推荐学习:python视频教程

以上がPythonの文字とリストを簡単に学ぶ(詳細な例)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。