結合データ型
1 リスト
リストの式
1 2 | ls = [ "Python" , 1989, True, { "version" : 3.7}]
ls
|
ログイン後にコピー
1 | [ 'Python' , 1989, True, { 'version' : 3.7}]
|
ログイン後にコピー
リストへの文字列
1 | [ '欢' , '迎' , '订' , '阅' , '本' , '专' , '栏' ]
|
ログイン後にコピー
リストへのタプル
1 | list(( "我" , "们" , "很" , "像" ))
|
ログイン後にコピー
リストへのコレクション
1 | list({ "李雷" , "韩梅梅" , "Jim" , "Green" })
|
ログイン後にコピー
1 | [ 'Green' , 'Jim' , '李雷' , '韩梅梅' ]
|
ログイン後にコピー
特殊範囲()
1 2 | for i in [0, 1, 2, 3, 4, 5]:
print (i)
|
ログイン後にコピー
1 2 | for i in range(6):
print (i)
|
ログイン後にコピー
開始番号がデフォルトの場合、デフォルトは 0
終了番号を含める必要がありますが、終了番号は取得できないことに注意してください
デフォルトの数値間隔は 1
1 2 | for i in range(1, 11, 2):
print (i)
|
ログイン後にコピー
プロパティのリストを表示します
1 2 | ls = [1, 2, 3, 4, 5]
len(ls)
|
ログイン後にコピー
#変数名 [位置番号]
順方向インデックスは 0 から始まります
逆方向インデックスは -1 から始まります
1 | cars = [ "BYD" , "BMW" , "AUDI" , "TOYOTA" ]
|
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
1 2 | print (cars[0])
print (cars[-4])
|
ログイン後にコピー
変数名 [開始位置: 終了位置: スライス間隔]
1 | cars = [ "BYD" , "BMW" , "AUDI" , "TOYOTA" ]
|
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
- 順方向スライス##
1 | print (cars[:3]) # 前三个元素,开始位置缺省,默认为0;切片间隔缺省,默认为1
|
ログイン後にコピー
e
1 | print (cars[1:4:2]) # 第二个到第四个元素 前后索引差为2
|
ログイン後にコピー
1 | print (cars[:]) # 获取整个列表,结束位置缺省,默认取值到最后
|
ログイン後にコピー
1 | [ 'BYD' , 'BMW' , 'AUDI' , 'TOYOTA' ]
|
ログイン後にコピー
1 | print (cars[-4:-2]) # 获取前两个元素
|
ログイン後にコピー
逆スライス-
#e
1 | cars = [ "BYD" , "BMW" , "AUDI" , "TOYOTA" ]
|
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
1 2 | print (cars[:-4:-1]) # 开始位置缺省,默认为-1
print (cars[::-1]) # 获得反向列表
|
ログイン後にコピー
リスト演算子
** list1 lis2 ** の形式を使用してリストのスプライシングを実装します-
1 2 | [ 'TOYOTA' , 'AUDI' , 'BMW' ]
[ 'TOYOTA' , 'AUDI' , 'BMW' , 'BYD' ]
|
ログイン後にコピー
1 2 3 | a = [1, 2]
b = [3, 4]
a+b # 该用法用的不多
|
ログイン後にコピー
使用 n*list または list*n リストの複数のコピーを実現します #リストの 1 つを初期化するメソッド
リスト操作メソッド1.要素の追加
最後に要素を追加します—— List.append(対象要素追加)
-
1 | [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
|
ログイン後にコピー
1 | languages = [ "Python" , "C++" , "R" ]
|
ログイン後にコピー
1 2 | languages.append( "Java" )
languages
|
ログイン後にコピー
任意の位置に要素を挿入 - list.insert(位置番号, 追加する要素)
その位置に対応する要素 - を
の前に追加し、最後に追加する要素
1 | [ 'Python' , 'C++' , 'R' , 'Java' ]
|
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
1 2 | languages.insert(1, "C" )
languages
|
ログイン後にコピー
を挿入し、全体として別のリストにマージします - List 1.extend (リスト 2 )
-
append リスト 2 全体を要素としてリスト 1 に追加します
1 | [ 'Python' , 'C' , 'C++' , 'R' , 'Java' ]
|
ログイン後にコピー
1 2 | languages.append([ "Ruby" , "PHP" ])
languages
|
ログイン後にコピー
extend もちろんリスト 2 の要素をリスト 1 に 1 つずつ追加しますこれは加算によって実現できます。
1 | [ 'Python' , 'C' , 'C++' , 'R' , 'Java' , [ 'Ruby' , 'PHP' ]]
|
ログイン後にコピー
1 2 3 | languages = [ 'Python' , 'C' , 'C++' , 'R' , 'Java' ]
languages.extend([ "Ruby" , "PHP" ])
languages
|
ログイン後にコピー
2. 要素を削除します
リスト内の位置 i にある要素を削除します list.pop(position)
-
1 | [ 'Python' , 'C' , 'C++' , 'R' , 'Java' , 'Ruby' , 'PHP' ]
|
ログイン後にコピー
1 2 3 | languages = [ 'Python' , 'C' , 'C++' , 'R' , 'Java' ]
languages.pop(1)
languages
|
ログイン後にコピー
位置情報を書き込まないで、デフォルトで最後の要素を削除します
-
1 | [ 'Python' , 'C++' , 'R' , 'Java' ]
|
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
最初に出現した要素を削除しますリスト内 削除する要素のリスト.remove(削除する要素)
- ##
1 2 3 | languages = [ 'Python' , 'C' , 'R' , 'C' , 'Java' ]
languages.remove( "C" )
languages
|
ログイン後にコピー
1 | [ 'Python' , 'R' , 'C' , 'Java' ]
|
ログイン後にコピー
1 2 3 4 | languages = [ 'Python' , 'C' , 'R' , 'C' , 'Java' ]
while "C" in languages:
languages.remove( "C" )
languages
|
ログイン後にコピー
3. 要素を検索します
リスト内でチェック対象の要素が初めて出現する位置 list.index(チェック対象の要素)
1 2 3 | languages = [ 'Python' , 'C' , 'R' , 'Java' ]
idx = languages.index( "R" )
idx
|
ログイン後にコピー
4. 要素を変更します
「最初にインデックスを付けてから値を割り当てる」という方法で要素を変更します リスト名[位置]=新しい値
1 2 3 | languages = [ 'Python' , 'C' , 'R' , 'Java' ]
languages[1] = "C++"
languages
|
ログイン後にコピー
1 | [ 'Python' , 'C++' , 'R' , 'Java' ]
|
ログイン後にコピー
ログイン後にコピー
ログイン後にコピー
5、列表的复制
1 2 3 | languages = [ 'Python' , 'C' , 'R' , 'Java' ]
languages_2 = languages
print (languages_2)
|
ログイン後にコピー
1 | [ 'Python' , 'C' , 'R' , 'Java' ]
|
ログイン後にコピー
1 2 3 | languages.pop()
print (languages)
print (languages_2)
|
ログイン後にコピー
1 2 | [ 'Python' , 'C' , 'R' ]
[ 'Python' , 'C' , 'R' ]
|
ログイン後にコピー
当内容中也有列表这种可变的情况时,这时浅拷贝可能出问题,应该采用深拷贝。
1 2 3 4 5 | languages = [ 'Python' , 'C' , 'R' , 'Java' ]
languages_2 = languages. copy ()
languages.pop()
print (languages)
print (languages_2)
|
ログイン後にコピー
1 2 | [ 'Python' , 'C' , 'R' ]
[ 'Python' , 'C' , 'R' , 'Java' ]
|
ログイン後にコピー
ログイン後にコピー
1 2 3 4 5 | languages = [ 'Python' , 'C' , 'R' , 'Java' ]
languages_3 = languages[:]
languages.pop()
print (languages)
print (languages_3)
|
ログイン後にコピー
1 2 | [ 'Python' , 'C' , 'R' ]
[ 'Python' , 'C' , 'R' , 'Java' ]
|
ログイン後にコピー
ログイン後にコピー
6、列表的排序
使用列表.sort()对列表进行永久排序
直接在列表上进行操作,无返回值
默认是递增的排序
1 2 3 | ls = [2, 5, 2, 8, 19, 3, 7]
ls.sort()
ls
|
ログイン後にコピー
1 2 | ls.sort(reverse = True)
ls
|
ログイン後にコピー
使用sorted(列表)对列表进行临时排序
原列表保持不变,返回排序后的列表
1 2 3 4 | ls = [2, 5, 2, 8, 19, 3, 7]
ls_2 = sorted(ls)
print (ls)
print (ls_2)
|
ログイン後にコピー
1 2 | [2, 5, 2, 8, 19, 3, 7]
[19, 8, 7, 5, 3, 2, 2]
|
ログイン後にコピー
1 | sorted(ls, reverse = True)
|
ログイン後にコピー
7、列表的翻转
使用列表.reverse()对列表进行永久翻转
直接在列表上进行操作,无返回值
1 2 3 | ls = [1, 2, 3, 4, 5]
print (ls[::-1])
ls
|
ログイン後にコピー
1 2 3 | [5, 4, 3, 2, 1]
[1, 2, 3, 4, 5]
|
ログイン後にコピー
8、使用for循环对列表进行遍历
1 2 3 | ls = [1, 2, 3, 4, 5]
for i in ls:
print (i)
|
ログイン後にコピー
2 元组
元组的表达
通俗的讲,可以将元组视作“不可变的列表”
1 | names = ( "Peter" , "Pual" , "Mary" )
|
ログイン後にコピー
元组的操作
不支持元素增加、元素删除、元素修改操作
其他操作与列表的操作完全一致
元组的常见用处
打包与解包
1 2 3 4 5 | def f1(x): # 返回x的平方和立方
return x**2, x**3 # 实现打包返回
print (f1(3))
print (type(f1(3))) # 元组类型
|
ログイン後にコピー
1 2 | (9, 27)
< class 'tuple'>
|
ログイン後にコピー
1 2 3 | a, b = f1(3) # 实现解包赋值
print (a)
print (b)
|
ログイン後にコピー
1 2 3 | numbers = [201901, 201902, 201903]
name = [ "小明" , "小红" , "小强" ]
list(zip(numbers,name))
|
ログイン後にコピー
1 | [(201901, '小明' ), (201902, '小红' ), (201903, '小强' )]
|
ログイン後にコピー
1 2 | for number,name in zip(numbers,name): # 每次取到一个元组,立刻进行解包赋值
print (number, name)
|
ログイン後にコピー
1 2 3 | 201901 小明
201902 小红
201903 小强
|
ログイン後にコピー
3 字典
字典的表达
1 2 | students = {201901: '小明' , 201902: '小红' , 201903: '小强' }
students
|
ログイン後にコピー
字典键的要求
如果重复,前面的键就被覆盖了
1 2 | students = {201901: '小明' , 201901: '小红' , 201903: '小强' }
students
|
ログイン後にコピー
1 | {201901: '小红' , 201903: '小强' }
|
ログイン後にコピー
2、字典的键必须是不可变类型,如果键可变,就找不到对应存储的值了
不可变类型:数字、字符串、元组。 一旦确定,它自己就是它自己,变了就不是它了。
可变类型:列表、字典、集合。 一旦确定,还可以随意增删改。因此这三个类型不能作为字典的键。
1 2 3 | d1 = {1: 3}
d2 = { "s" : 3}
d3 = {(1,2,3): 3}
|
ログイン後にコピー
上面没有报错,说明是合法的。
1 2 3 4 5 6 7 8 9 | ---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-68-bf7f06622b3f> in <module>
----> 1 d = {[1, 2]: 3}
TypeError: unhashable type: 'list'
|
ログイン後にコピー
1 2 3 4 5 6 7 8 9 | ---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-69-188e5512b5fe> in <module>
----> 1 d = {{1:2}: 3}
TypeError: unhashable type: 'dict'
|
ログイン後にコピー
1 2 3 4 5 6 7 8 9 | ---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-70-c2dfafc1018a> in <module>
----> 1 d = {{1, 2}: 3}
TypeError: unhashable type: 'set'
|
ログイン後にコピー
字典的性质
1 2 | students = {201901: '小明' , 201902: '小红' , 201903: '小强' }
len(students)
|
ログイン後にコピー
通过 字典[键] 的形式来获取对应的值
1 2 | students = {201901: '小明' , 201902: '小红' , 201903: '小强' }
students[201902]
|
ログイン後にコピー
字典的操作方法
1、增加键值对
1 2 3 | students = {201901: '小明' , 201902: '小红' , 201903: '小强' }
students[201904] = "小雪"
students
|
ログイン後にコピー
1 | {201901: '小明' , 201902: '小红' , 201903: '小强' , 201904: '小雪' }
|
ログイン後にコピー
2、删除键值对
1 2 3 | students = {201901: '小明' , 201902: '小红' , 201903: '小强' }
del students[201903]
students
|
ログイン後にコピー
1 | {201901: '小明' , 201902: '小红' }
|
ログイン後にコピー
1 2 3 4 | students = {201901: '小明' , 201902: '小红' , 201903: '小强' }
value = students.pop(201903) # 删除键值对,同时获得删除键值对的值
print (value)
print (students)
|
ログイン後にコピー
1 2 | 小强
{201901: '小明' , 201902: '小红' }
|
ログイン後にコピー
1 2 3 4 | students = {201901: '小明' , 201902: '小红' , 201903: '小强' }
key, value = students.popitem()
print (key, value)
print (students)
|
ログイン後にコピー
1 2 | 201903 小强
{201901: '小明' , 201902: '小红' }
|
ログイン後にコピー
3、修改值
1 2 3 | students = {201901: '小明' , 201902: '小红' , 201903: '小强' }
students[201902] = "小雪"
students
|
ログイン後にコピー
1 | {201901: '小明' , 201902: '小雪' , 201903: '小强' }
|
ログイン後にコピー
4、d.get( )方法
d.get(key,default) 从字典d中获取键key对应的值,如果没有这个键,则返回default
1 2 3 4 5 6 7 | s = "牛奶奶找刘奶奶买牛奶"
d = {}
print (d)
for i in s:
d[i] = d.get(i, 0)+1 # 如果该字符第一次出现,则返回 default 0 ,然后+1统计。如果之前就有i这个键,则返回该 key i 所对应的值。
print (d)
# print (d)
|
ログイン後にコピー
1 2 3 4 5 6 7 8 9 10 11 | {}
{ '牛' : 1}
{ '牛' : 1, '奶' : 1}
{ '牛' : 1, '奶' : 2}
{ '牛' : 1, '奶' : 2, '找' : 1}
{ '牛' : 1, '奶' : 2, '找' : 1, '刘' : 1}
{ '牛' : 1, '奶' : 3, '找' : 1, '刘' : 1}
{ '牛' : 1, '奶' : 4, '找' : 1, '刘' : 1}
{ '牛' : 1, '奶' : 4, '找' : 1, '刘' : 1, '买' : 1}
{ '牛' : 2, '奶' : 4, '找' : 1, '刘' : 1, '买' : 1}
{ '牛' : 2, '奶' : 5, '找' : 1, '刘' : 1, '买' : 1}
|
ログイン後にコピー
5、d.keys( ) d.values( )方法
把所有的key,value 单独拿出来。
1 2 3 | students = {201901: '小明' , 201902: '小红' , 201903: '小强' }
print (list(students.keys()))
print (list(students.values()))
|
ログイン後にコピー
1 2 | [201901, 201902, 201903]
[ '小明' , '小红' , '小强' ]
|
ログイン後にコピー
6、d.items( )方法及字典的遍历
1 2 3 | print (list(students.items()))
for k, v in students.items():#进行解包
print (k, v)
|
ログイン後にコピー
1 2 3 4 | [(201901, '小明' ), (201902, '小红' ), (201903, '小强' )]
201901 小明
201902 小红
201903 小强
|
ログイン後にコピー
4 集合
集合的表达
1 2 | students = { "小明" , "小红" , "小强" , "小明" } #可用于去重
students
|
ログイン後にコピー
集合的运算
1 2 | Chinese_A = { "刘德华" , "张学友" , "张曼玉" , "钟楚红" , "古天乐" , "林青霞" }
Chinese_A
|
ログイン後にコピー
1 | { '刘德华' , '古天乐' , '张学友' , '张曼玉' , '林青霞' , '钟楚红' }
|
ログイン後にコピー
1 2 | Math_A = { "林青霞" , "郭富城" , "王祖贤" , "刘德华" , "张曼玉" , "黎明" }
Math_A
|
ログイン後にコピー
1 | { '刘德华' , '张曼玉' , '林青霞' , '王祖贤' , '郭富城' , '黎明' }
|
ログイン後にコピー
1 | { '刘德华' , '古天乐' , '张学友' , '张曼玉' , '林青霞' , '王祖贤' , '郭富城' , '钟楚红' , '黎明' }
|
ログイン後にコピー
1 | { '古天乐' , '张学友' , '王祖贤' , '郭富城' , '钟楚红' , '黎明' }
|
ログイン後にコピー
集合的操作方法
1 2 3 | stars = { "刘德华" , "张学友" , "张曼玉" }
stars.add( "王祖贤" )
stars
|
ログイン後にコピー
1 | { '刘德华' , '张学友' , '张曼玉' , '王祖贤' }
|
ログイン後にコピー
1 2 | for star in stars:
print (star)
|
ログイン後にコピー
以上がPython の結合データ型の使用方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。