Python学習ノート(一)——リスト
21119 ワード
リスト#リスト#
1つの配列に文字列も数字もあります
スライスによるサブリストの取得
リスト関数
len
オペレータ'*','+'演算
delリストから削除
forループとリスト
別のケース
inとnot in操作
マルチキャストテクニック
方法
index()メソッドリストで値を検索
append()とinsert()の使用
remove()メソッドリストから値を削除
sort()リスト内の値のソート
デフォルトはASCIIソート
リストの要素が一致しない場合はソートできません
逆ソート
辞書順にソート
注:
タプルデータ型
メタグループの内容は変えられないので、次にPythonはメタグループを最適化して、使用速度はもっと速いです
リスト()とtuple()関数を使用してタイプを変換
参照
割り当て時にコピーされるのではなく、同じリストを指します.
転送アプリケーション(リファレンス呼び出しと同様)
copy()関数とdeepcopy()関数
リストにリストが含まれている場合は、
1つの配列に文字列も数字もあります
>>> spam = [['cat','bat'],[10,20,30]]
>>> spam[1]
[10, 20, 30]
>>> spam[0]
['cat', 'bat']
>>> spam[0][0]
'cat'
>>> spam[1][0]
10
>>> spam[0][0][0]
'c'
>>> spam[1][1][1]
Traceback (most recent call last):
File "<pyshell#11>", line 1, in <module>
spam[1][1][1]
TypeError: 'int' object is not subscriptable
>>> spam[1][1]
20
>>> spam[-1]
[10, 20, 30]
スライスによるサブリストの取得
>>> spam
['a', 'b', 'c', 'd']
>>> spam[1:3]
['b', 'c']
>>> spam[1:-1]
['b', 'c']
>>>
リスト関数
len
>>> len(spam)
4
オペレータ'*','+'演算
>>> ['a','c','d']+[1,2,3,4]
['a', 'c', 'd', 1, 2, 3, 4]
>>> (['a','c','d']+[1,2,3,4])*3
['a', 'c', 'd', 1, 2, 3, 4, 'a', 'c', 'd', 1, 2, 3, 4, 'a', 'c', 'd', 1, 2, 3, 4]
delリストから削除
>>> spam
['a', 'b', 'c', 'd']
>>> del spam[1]
>>> spam
['a', 'c', 'd']
forループとリスト
>>> for i in [1,2,3]:
print(spam)
['a', 'c', 'd']
['a', 'c', 'd']
['a', 'c', 'd']
別のケース
>>> for i in [2,3,4,6]:
print(i)
2
3
4
6
inとnot in操作
>>> spam
['a', 'c', 'd']
>>> a = 'a'
>>> a in spam
True
>>> temp = 'f'
>>> temp not in spam
True
マルチキャストテクニック
>>> a,b,c = spam
>>> spam
['a', 'c', 'd']
>>> a
'a'
>>> b
'c'
>>> c
'd'
方法
index()メソッドリストで値を検索
spam = ['a','b','c','d']
while True:
a = input()
if(a == 'exit'):
break
try:
print(spam.index(a))
except ValueError:
print('Error')
>>> spam
['a', 'c', 'd']
>>> a
'a'
>>> spam.index(a)
0
#
append()とinsert()の使用
>>> spam
['a', 'c', 'd']
>>> spam.append(a)
>>> spam
['a', 'c', 'd', 'a']
#
>>> spam.insert(1,'temp')
>>> spam
['a', 'temp', 'c', 'd', 'a']
#
remove()メソッドリストから値を削除
>>> spam
['a', 'temp', 'c', 'd', 'a']
>>> spam.remove('temp')
>>> spam
['a', 'c', 'd', 'a']
>>> spam.remove('g')
Traceback (most recent call last):
File "" , line 1, in
spam.remove('g')
ValueError: list.remove(x): x not in list
sort()リスト内の値のソート
デフォルトはASCIIソート
>>> s
['c', 'd', 'a', 1, 5, 4, 3, 3.1]
>>> d = s[0:3]
>>> d
['c', 'd', 'a']
>>> d.sort()
>>> d
['a', 'c', 'd']
>>> s[0:3] = d
>>> s
['a', 'c', 'd', 1, 5, 4, 3, 3.1]
リストの要素が一致しない場合はソートできません
# int,float
>>> f
[1, 5, 4, 3, 3.14]
>>> f.sort()
>>> f
[1, 3, 3.14, 4, 5]
逆ソート
#reverse=True
>>> f
[1, 3, 3.14, 4, 5]
>>> f.sort(reverse=True)
>>> f
[5, 4, 3.14, 3, 1]
辞書順にソート
注:
key = str.lower
はすべての要素を小文字としています.>>> spam = ['a','Z','z','A']
>>> spam.sort(key=str.lower)
>>> spam
['a', 'A', 'Z', 'z']
タプルデータ型
メタグループの内容は変えられないので、次にPythonはメタグループを最適化して、使用速度はもっと速いです
>>> sp = ('hello',99,3.14)
>>> type(('hello',))
<class 'tuple'>
>>> type(('hello'))
<class 'str'>
#----------------------------
>>> sp = ('hello',99,3.14)
>>> sp[1]
99
>>> sp[1] = 44
Traceback (most recent call last):
File "" , line 1, in <module>
sp[1] = 44
TypeError: 'tuple' object does not support item assignment
リスト()とtuple()関数を使用してタイプを変換
>>> list(('who','are','you'))
['who', 'are', 'you']
>>> list(('hello'))
['h', 'e', 'l', 'l', 'o']
>>> tuple(['hello','word'])
('hello', 'word')
>>> tuple(['hello'])
('hello',)
参照
割り当て時にコピーされるのではなく、同じリストを指します.
>>> spam
[1, 5, 4, 2, 'hello', 'Z', 'z']
>>> spam
[1, 5, 4, 2, 'hello', 'Z', 'z']
>>> chees = spam
>>> chees[1] = 'hello'
>>> spam
[1, 'hello', 4, 2, 'hello', 'Z', 'z']
>>> chees
[1, 'hello', 4, 2, 'hello', 'Z', 'z']
転送アプリケーション(リファレンス呼び出しと同様)
def eggs(temp):
temp.append('hello')
spam = [1,2,3]
eggs(spam)
print(spam)
=============== RESTART: D:/python/ .py ===============
[1, 2, 3, 'hello']
copy()関数とdeepcopy()関数
copy.copy()
は、参照をコピーするだけでなく、リストや辞書のような可変値をコピーするために使用することができる.>>> import copy
>>> spam = [1,2,3]
>>> spam
[1, 2, 3]
>>> temp = copy.copy(spam)
>>> temp
[1, 2, 3]
>>> spam.append('hello')
>>> spam
[1, 2, 3, 'hello']
>>> temp
[1, 2, 3]
>>> temp.append('OK')
>>> spam,temp
([1, 2, 3, 'hello'], [1, 2, 3, 'OK'])
リストにリストが含まれている場合は、
copy.deepcopt()
を使用します.>>> spam
[[1, 2, 3, 'OK'], 1, 2]
>>> temp1 = copy.deepcopy(spam)
>>> temp1
[[1, 2, 3, 'OK'], 1, 2]