0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Python3入門①~データ型について

Last updated at Posted at 2019-11-17

##Pythonのデータ型について理解を深める

今回データ型について学んだので記事にしたいと思いました。
(既に先人の方々の記事が沢山あるけどアウトプットを兼ねて)

##Pythonのデータ型(オブジェクト)における各データ型利用時の注意点
まずPythonには、Mutableな型とImmutableな型がある。
どういうことかというと。。。まずは意味から。
Immutable => 不変なデータ(Pythonではオブジェクト)
Mutable => 可変なデータ(Pythonではオブジェクト)
##Ex.
[Immutable]

tmp_str="JoJo"
tmp_str[3]="i" 
#TypeError: 'str' object does not support item assignment
tmp_tuple=("Dominator","Paralyzer")
tmp_tuple[1]="Eliminator" 
# TypeError: 'tuple' object does not support item assignment

[Mutable]

tmp_list=["Dominator","Paralyzer"] 
tmp_list[1]=["Eliminator"]

※Mutableな型は関数の引数としてデフォルト定義すると、参照渡しになるので注意が必要

##Pythonのデータ型(Standard)には何がある??

Type Mutable Immutable
String
Int
Tuple
List
Dict
Set
Boolean

##色々試してみた

# Mutable objects can be put in Immutable object
tmp_list = ['Ichinokata','Ninokata']
tmp_tuple = ('Mizunokokyu',tmp_list)
# OK
tmp_tuple[1].append('Sannokata')
# NG
tmp_tuple[0]='Zenshuuchunokokyu'

# List comprehension
tmp_kokyu_list = list(tmp_tuple)
kokyu_list=[tmp_kokyu_list[i] for i in range(0,len(tmp_kokyu_list))]

# Target dictionary data
persons={
   0: {
        "name":"Rouis lit",
        "age":41,
        "Position":"Corporate Attorney",
    },
   1: {
        "name":"Harvey Spector",
        "age":41,
        "Position":"Assistant District Attorney",
    }, 
   2: {
        "name":"Rachel Zane",
        "age":33,
        "Position":"Corporate Attorney",
    }, 
   3: {
        "name":"Mike Ross",
        "age":37,
        "Position":"Junior Partner",
    },     
}

persons_list_length=len(persons)
base_index=0
def swap_value(data, index, index_plus_one):
    swap = data[index]
    data[index] = data[index_plus_one]
    data[index_plus_one] = swap

# Pass by reference and sort data (Just test)
for i in range(base_index,persons_list_length-1):
    for j in range(base_index,persons_list_length-i-1):
        if persons[j]["age"] > persons[j+1]["age"]:
            swap_value(persons, j, j+1)

print(persons)

# If persons type is "list"
# Just call below and you'll see same result
persons.sort(key=lambda x: x['age'])

##ひとまずまとめ
・データ型を学ぶだけでも沢山の知見を得られる
・公式のリファレンスはちゃんと読む
・関数の仮引数にMutableな型を指定すると参照渡しになるので注意する

参照渡しそれ自体はありません。

・Pythonには便利な機能が沢山
*個人的には、ImmutableとかMutableは新しい概念だったので内部的にどのようにメモリ/アドレス確保したり書き込みをできなくしているのか気になった

0
1
4

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?