pythonを使ったメモ
5217 ワード
構文
値と参照
Pythonパラメータ伝達は「伝達対象参照」方式を採用している.この方式は、伝達値と伝達参照の統合に相当する.関数が辞書やリストなどの可変オブジェクトの参照を受信すると、オブジェクトの元の値が変更されます.これは、「参照の伝達」によってオブジェクトが伝達されることに相当します. 関数が、数値、文字、またはメタグループなどの可変オブジェクトの参照を受信した場合、元のオブジェクトを直接変更することはできません.「値の伝達」によってオブジェクトを伝達することに相当します. はいれつ
配列の結合
戻り値がないためappend関数を直接使用することはできません.この関数は+で2つの配列を直接結合できます.
同じ数と異なる数を判断する
ツールバーの
並べ替えガイド
名前付き属性を持つオブジェクトの場合:
ディクショナリのソート
リファレンス sorted関数はまずsorted関数を紹介し,
ここでiterableは反復可能なオブジェクトを表し、例えばdict.items()、dict.keys()などであり、keyは比較に関与する要素を選択するための関数であり、reverseはソートが逆であるか順序を指定するために使用され、reverse=trueは逆であり(大きいから小さい)、reverse=falseは順序(小さいから大きい)、デフォルトはreverse=falseである. keyソート辞書をkeyソートするには、sorted関数を直接呼び出すことができます.
sorted(my_dict.keys()を直接使用すると、key値で辞書をソートできます.ここではkey値を順番にソートします.逆順序でソートするには、reverseをtrueにするだけです. value値に従ってソートする3つの方法は、辞書をvalue値に従ってソートする を実現することができる.
(1)key lambda匿名関数を用いてvalueをソートする
(2)operatorのitemgetterでソート
isと==の違い
https://www.cnblogs.com/wangkun122/p/9082088.html
isと==はいずれも対象を比較判断する役割を果たすが,対象を比較判断する内容は異なる.具体的な違いを見てみましょう.
==比較オペレータとis同一性演算子の違い
==python標準オペレータの比較オペレータで、次の2つの文字列間の比較など、2つのオブジェクトのvalue(値)が等しいかどうかを比較するために使用されます.
例1.
isは同一性演算子とも呼ばれ、この演算子はオブジェクト間の一意のアイデンティティ識別、すなわちidが同じか否かを比較的に判断する.次のリスト間を比較すると、is同一性演算子の動作原理がわかります.
例2.
数値型と文字列型のみの場合、a is bはTrueであり、aとbがtuple,list,dictまたはset型の場合、a is bはFalseである
バックグラウンド
requiremnets.txt
rでエスケープを取り消す
仮想環境の作成とアクティブ化
ユニットテスト
jsonエラーxx is not JSON serializable
jsonを使用しているときによく遭遇するxxx is not JSON serializable、つまり一部のオブジェクトをシーケンス化できない
jsonEncoderを書き換える
Jupyter Notebookの実行
値と参照
Pythonパラメータ伝達は「伝達対象参照」方式を採用している.この方式は、伝達値と伝達参照の統合に相当する.
配列の結合
戻り値がないためappend関数を直接使用することはできません.この関数は+で2つの配列を直接結合できます.
同じ数と異なる数を判断する
#
list1 = [' ', ' ', ' ', ' ']
#
list2 = [' ', ' ', ' ', ' ']
a = [x for x in list1 if x in list2] #
b = [y for y in (list1 + list2) if y not in c] #
print('a :',a)
print('b :',b)
c = [x for x in list1 if x not in list2] # list1 list2
d = [y for y in list2 if y not in list1] # list2 list1
print('c :',c)
print('d :',d)
out:
a : [' ', ' ', ' ']
b : [' ', ' ']
c : [' ']
d : [' ']
ツールバーの
並べ替えガイド
名前付き属性を持つオブジェクトの場合:
>>> student_tuples = [
... ('john', 'A', 15),
... ('jane', 'B', 12),
... ('dave', 'B', 10),
... ]
>>> sorted(student_tuples, key=lambda student: student[2]) # sort by age
[('dave', 'B', 10), ('jane', 'B', 12), ('john', 'A', 15)]
ディクショナリのソート
リファレンス
sorted(iterable,key,reverse)
,sortedにはiterable,key,reverseの3つのパラメータがある.ここでiterableは反復可能なオブジェクトを表し、例えばdict.items()、dict.keys()などであり、keyは比較に関与する要素を選択するための関数であり、reverseはソートが逆であるか順序を指定するために使用され、reverse=trueは逆であり(大きいから小さい)、reverse=falseは順序(小さいから大きい)、デフォルトはreverse=falseである.
my_dict = {'lilee':25, 'age':24, 'phone':12}
sorted(my_dict.keys())
['age', 'lilee', 'phone']
sorted(my_dict.keys()を直接使用すると、key値で辞書をソートできます.ここではkey値を順番にソートします.逆順序でソートするには、reverseをtrueにするだけです.
sorted(my_dcit.keys(), reverse = true)
(1)key lambda匿名関数を用いてvalueをソートする
d = {'lilee':25, 'wangyan':21, 'liqun':32, 'age':19}
sorted(d.items(), key=lambda item:item[1])
[('age',19),('wangyan',21),('lilee',25),('liqun',32)]
sorted(d.items(), key=lambda item:item[1], reverse=True)
[('liqun',32),('lilee',25),('wangyan',21),(age',19)]
(2)operatorのitemgetterでソート
import operator
sorted(d.items(), key=operator.itemgetter(1))
[('age',19),('wangyan',21),('lilee',25),('liqun',32)]
isと==の違い
https://www.cnblogs.com/wangkun122/p/9082088.html
isと==はいずれも対象を比較判断する役割を果たすが,対象を比較判断する内容は異なる.具体的な違いを見てみましょう.
==比較オペレータとis同一性演算子の違い
==python標準オペレータの比較オペレータで、次の2つの文字列間の比較など、2つのオブジェクトのvalue(値)が等しいかどうかを比較するために使用されます.
例1.
>>> a = 'cheesezh'
>>> b = 'cheesezh'
>>> a == b
True
isは同一性演算子とも呼ばれ、この演算子はオブジェクト間の一意のアイデンティティ識別、すなわちidが同じか否かを比較的に判断する.次のリスト間を比較すると、is同一性演算子の動作原理がわかります.
例2.
>>> x = y = [4,5,6]
>>> z = [4,5,6]
>>> x == y
True
>>> x == z
True
>>> x is y
True
>>> x is z
False
>>>
>>> print id(x)
3075326572
>>> print id(y)
3075326572
>>> print id(z)
3075328140
数値型と文字列型のみの場合、a is bはTrueであり、aとbがtuple,list,dictまたはset型の場合、a is bはFalseである
バックグラウンド
requiremnets.txt
pip freeze > requirements.txt //
pip install -r requirements.txt //
rでエスケープを取り消す
仮想環境の作成とアクティブ化
pip3 install virtualenv
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
ユニットテスト
import unittest
class MyTest(unittest.TestCase): # unittest.TestCase
def tearDown(self):
#
print('111')
def setUp(self):
#
print('22222')
@classmethod
def tearDownClass(self):
# @ classmethod , test
print('4444444')
@classmethod
def setUpClass(self):
# @classmethod , test
print('33333')
def test_a_run(self):
self.assertEqual(1, 1) #
def test_b_run(self):
self.assertEqual(2, 2) #
if __name__ == '__main__':
unittest.main()#
jsonエラーxx is not JSON serializable
jsonを使用しているときによく遭遇するxxx is not JSON serializable、つまり一部のオブジェクトをシーケンス化できない
jsonEncoderを書き換える
import decimal
class DecimalEncoder(json.JSONEncoder):
def default(self, o):
if isinstance(o, decimal.Decimal):
return float(o)
super(DecimalEncoder, self).default(o)
# and then:
json.dumps(chart_list,..., cls=DecimalEncoder)
Jupyter Notebookの実行
jupyter notebook --ip=0.0.0.0 --no-browser --allow-root