Pythonプログラミング言語の35の特徴(言語の特徴と使い方のヒント)
1. Python の概要
Python を学び始めて以来、頻繁に使用される「ヒント」のリストを維持することにしました。 「これはいける!」と思うコードを見つけたら(StackOverflow やオープンソース ソフトウェアなどで)、理解できるまで試してからリストに追加します。 。この投稿はクリーンアップされたリストの一部です。経験豊富な Python プログラマーであれば、すでに知っているものもあれば、まだ知らないものも発見できるかもしれません。あなたが Python を学習している、またはプログラミングを学び始めたばかりの C、C++、または Java プログラマーであれば、私と同じように、それらの多くが非常に役立つことに気づくでしょう。
それぞれのトリックや言語の機能は、過剰な説明をせずに例を通してのみ検証できます。例をわかりやすくするように努めましたが、慣れによっては、一部の例はまだ少し複雑に見えるかもしれません。したがって、例を見てよくわからない場合は、タイトルから Google を通じて詳細なコンテンツを取得するのに十分な情報が得られます。
2. Python 言語の機能
リストは難易度別にソートされており、よく使用される言語の機能とテクニックが先頭にあります。
1. スピンオフ
>>> a、b、c = 1、2、3
>>> a、b、c
(1、2、3)
>>> a, b, c = [1, 2, 3]
>>> a、b、c
(1、2、3)
>>> a, b, c = (2 * i + 1 for i in range(3))
>>> a、b、c
(1、3、5)
>>> a, (b, c), d = [1, (2, 3), 4]
>>>
1
>>> 2
>>> c
3
>>>
4
2. 交換変数分割
>>> a、b = b、a
>>> a、b
(2, 1)
3. 拡張とスピンオフ (Python 3 に適用)
>>>
1
>>> [2、3、4]
>>>c
5
4. ネガティブインデックス
10
>>>[-3]
8
5. リストのスライス (a[start:end])
[2、3、4、5、6、7]
6. 負のインデックスを使用したリストのスライス
[7, 8]
7. ステップ値を含むスライスのリスト (a[start:end:step])
[0、2、4、6、8、10]
>>>[::3]
[0、3、6、9]
>>> a[2:8:2]
[2、4、6]
8. 負のステップ値リストのスライス
[10、9、8、7、6、5、4、3、2、1、0]
>>> a[::-2]
[10、8、6、4、2、0]
9. リストスライスの割り当て
>>>
[1、2、0、0、4、5]
>>> a[1:1] = [8, 9]
>>>
[1、8、9、2、0、0、4、5]
>>> a[1:-1] = []
>>>
[1, 5]
10. 名前付きスライス (slice(start, end, step))
>>> a = [0, 1, 2, 3, 4, 5]
>>> LASTTHREE = スライス(-3, なし)
>>> 最後の 3 つ
スライス(-3、なし、なし)
>>>[最後の 3 つ]
[3、4、5]
11.zip のパッケージ化と解凍のリストと複数
>>> a = [1, 2, 3]
>>> b = ['a', 'b', 'c']
>>> z = zip(a, b)
>>>z
[(1, 'a'), (2, 'b'), (3, 'c')]
>>>zip(*z)
[(1, 2, 3), ('a', 'b', 'c')]
12. zip を使用して隣接するリスト項目を結合します
>>> a = [1, 2, 3, 4, 5, 6]
>>> zip(*([iter(a)] * 2))
[(1, 2), (3, 4), (5, 6)]
>>> group_adjacent = ラムダ a, k: zip(*([iter(a)] * k))
>>>グループ隣接(a, 3)
[(1, 2, 3), (4, 5, 6)]
>>>グループ隣接(a, 2)
[(1, 2), (3, 4), (5, 6)]
>>> グループ隣接(a, 1)
[(1,)、(2,)、(3,)、(4,)、(5,)、(6,)]
>>> zip(a[::2], a[1::2])
[(1, 2), (3, 4), (5, 6)]
>>> zip(a[::3], a[1::3], a[2::3])
[(1, 2, 3), (4, 5, 6)]
>>> group_adjacent = lambda a, k: zip(*(a[i::k] for i in range(k)))
>>>グループ隣接(a, 3)
[(1, 2, 3), (4, 5, 6)]
>>>グループ隣接(a, 2)
[(1, 2), (3, 4), (5, 6)]
>>> グループ隣接(a, 1)
[(1,)、(2,)、(3,)、(4,)、(5,)、(6,)]
13. zip とイテレータを使用してスライディング ウィンドウ (n グラム) を生成します
>>> itertools インポート islice
から >>> def n_grams(a, n):
... z = (islice(a, i, None) for i in range(n))
... return zip(*z)
...
>>> a = [1, 2, 3, 4, 5, 6]
>>> n_grams(a, 3)
[(1, 2, 3), (2, 3, 4), (3, 4, 5), (4, 5, 6)]
>>> n_grams(a, 2)
[(1, 2), (2, 3), (3, 4), (4, 5), (5, 6)]
>>> n_grams(a, 4)
[(1, 2, 3, 4), (2, 3, 4, 5), (3, 4, 5, 6)]
14. zip を使用して辞書を逆引きします
>>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
>>> m.items()
[('a', 1), ('c', 3), ('b', 2), ('d', 4)]
>>> zip(m.values(), m.keys())
[(1, 'a'), (3, 'c'), (2, 'b'), (4, 'd')]
>>> mi = dict(zip(m.values(), m.keys()))
>>>ミ
{1: 'a'、2: 'b'、3: 'c'、4: 'd'}
15. フラットリスト:
>>> a = [[1, 2], [3, 4], [5, 6]]
>>> list(itertools.chain.from_iterable(a))
[1、2、3、4、5、6]
>>> sum(a, [])
[1、2、3、4、5、6]
>>> [l の x の l の x]
[1、2、3、4、5、6]
>>> a = [[[1, 2], [3, 4]], [[5, 6], [7, 8]]]
>>> [l1 の x、l1 の l2 、l2 の x]
[1、2、3、4、5、6、7、8]
>>> a = [1, 2, [3, 4], [[5, 6], [7, 8]]]
>>> flatten = lambda x: [y for l in x for y in flatten(l)] if type(x) が list else [x]
>>> 平らにする(a)
[1、2、3、4、5、6、7、8]
注: Python のドキュメントによると、 itertools.chain.from_iterable が推奨されます。
16. ジェネレーター式
>>> g = (xrange(10) の x には x ** 2)
>>>次(g)
0
>>>次(g)
1
>>>次(g)
4
>>>次(g)
9
>>> sum(x ** 3 for x in xrange(10))
2025年
>>> sum(x ** 3 for x in xrange(10) if x % 3 == 1)
408
17. 辞書の反復
>>> m = {x: x ** 2 for x in range(5)}
>>>
{0:0、1:1、2:4、3:9、4:16}
>>> m = {x: 'A' + str(x) for x in range(10)}
>>>
{0: 'A0'、1: 'A1'、2: 'A2'、3: 'A3'、4: 'A4'、5: 'A5'、6: 'A6'、7: 'A7'、8 : 'A8', 9: 'A9'}
18. 辞書を反復処理して辞書を反転します
>>> m = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
>>>
{'d': 4、'a': 1、'b': 2、'c': 3}
>>> {v: k の k、m.items() の v}
{1: 'a'、2: 'b'、3: 'c'、4: 'd'}
19. 名前付きシーケンス (collections.namedtuple)
>>> ポイント = collections.namedtuple('ポイント', ['x', 'y'])
>>> p = ポイント(x=1.0, y=2.0)
>>>p
点(x=1.0, y=2.0)
>>>x
1.0
>>> 2.0
20. 名前付きリストの継承:
... __スロット__ = ()
... def __add__(self, other):
... return Point(x=self.x + other.x, y=self.y + other.y)
...
>>> p = ポイント(x=1.0, y=2.0)
>>> q = 点(x=2.0, y=3.0)
>>> p + q
点(x=3.0, y=5.0)
21. 収集および収集業務
>>>A
set([1, 2, 3])
>>> B = {3, 4, 5, 6, 7}
>>>B
set([3, 4, 5, 6, 7])
>>> set([1, 2, 3, 4, 5, 6, 7])
>>>A&B
set([3])
>>> A - B
set([1, 2])
>>>B - A
set([4, 5, 6, 7])
>>>A ^ B
set([1, 2, 4, 5, 6, 7])
>>> (A ^ B) == ((A - B) | (B - A))
本当
22. マルチセットとその操作 (コレクション.カウンター)
>>>A
カウンター({2:2, 1:1})
>>>B
カウンター({2:2, 3:1})
>>> カウンタ({2:2, 1:1, 3:1})
>>>A&B
カウンター({2:2})
>>>A+B
カウンター({2:4, 1:1, 3:1})
>>> A - B
カウンタ({1:1})
>>>B - A
カウンタ({3:1})
23. 反復で最も一般的な要素 (collections.Counter)
コードをコピー
>>> A.most_common(1)
[(3, 4)]
>>> A.most_common(3)
[(3, 4), (1, 2), (2, 2)]
24. 両端キュー (collections.deque)
コードをコピー
>>> Q.extend([3, 4])
>>> Q.extendleft([5, 6])
>>>質問
deque([6, 5, 2, 1, 3, 4])
>>> Q.pop()
4
>>> Q.popleft()
6
>>>質問
deque([5, 2, 1, 3])
>>> Q.回転(3)
>>>質問
deque([2, 1, 3, 5])
>>> Q.回転(-3)
>>>質問
deque([5, 2, 1, 3])
25. 最大長の Deque (collections.deque)
>>> last_three = collections.deque(maxlen=3)
>>> xrange(10) の場合:
... last_three.append(i)
... print ', '.join(str(x) for x in last_three)
...
0
0、1
0、1、2
1、2、3
2、3、4
3、4、5
4、5、6
5、6、7
6、7、8
7、8、9
26. 辞書の並べ替え (collections.OrderedDict)
>>> m = dict((str(x), x) for x in range(10))
>>> ', '.join(m.keys())
1、0、3、2、5、4、7、6、9、8
>>> m = collections.OrderedDict((str(x), x) for x in range(10))
>>> ', '.join(m.keys())
0、1、2、3、4、5、6、7、8、9
>>> m = collections.OrderedDict((str(x), x) for x in range(10, 0, -1))
>>> ', '.join(m.keys())
10、9、8、7、6、5、4、3、2、1
27.デフォルト辞書 (collections.defaultdict)
>>> m = dict()
>>>['a']
トレースバック (最後の呼び出し):
ファイル「
キーエラー: 'a'
>>>
>>> m = collections.defaultdict(int)
>>>['a']
0
>>>m['b']
0
>>> m = collections.defaultdict(str)
>>>['a']
''
>>> m['b'] += 'a'
>>>m['b']
「あ」
>>> m = collections.defaultdict(lambda: '[デフォルト値]')
>>>['a']
'[デフォルト値]'
>>>m['b']
'[デフォルト値]'
28. デフォルトの辞書を使用して単純なツリーを表現します
>>> json をインポート
>>> ツリー = ラムダ: collections.defaultdict(tree)
>>> ルート = ツリー()
>>> ルート['メニュー']['id'] = 'ファイル'
>>> root['メニュー']['値'] = 'ファイル'
>>> root['menu']['menuitems']['new']['value'] = '新規'
>>> root['menu']['menuitems']['new']['onclick'] = 'new();'
>>> root['menu']['menuitems']['open']['value'] = '開く'
>>> root['menu']['menuitems']['open']['onclick'] = 'open();'
>>> root['menu']['menuitems']['close']['value'] = '閉じる'
>>> root['menu']['menuitems']['close']['onclick'] = 'close();'
>>> print json.dumps(root, sort_keys=True, indent=4, separators=(',', ': '))
{
「メニュー」: {
"id": "ファイル",
「メニュー項目」: {
「閉じる」: {
"onclick": "close();",
"値": "閉じる"
},
"新しい": {
"onclick": "new();",
"値": "新規"
},
"開く": {
"onclick": "open();",
"値": "開く"
}
}、
"値": "ファイル"
}
}
(詳細については、https://gist.github.com/hrldcpr/2012250 を参照してください)
29. オブジェクトを一意のシーケンス番号にマッピングする (collections.defaultdict)
>>> itertools、コレクションをインポートします
>>> value_to_numeric_map = collections.defaultdict(itertools.count().next)
>>> 数値マップ['a']
0
>>> 数値マップへの値['b']
1
>>> 数値マップ['c']
2
>>> 数値マップ['a']
0
>>> 数値マップへの値['b']
1
30. 最大要素と最小要素 (heapq.nlargest および heapq.nsmallest)
>>> a = [random.randint(0, 100) for __ in xrange(100)]
>>> heapq.nsmallest(5, a)
[3、3、5、6、8]
>>> heapq.nlargest(5, a)
[100、100、99、98、98]
31. デカルト積 (itertools.product)
>>> itertools.product([1, 2, 3], [4, 5]):
(1, 4)
(1, 5)
(2, 4)
(2, 5)
(3, 4)
(3, 5)
>>> itertools.product([0, 1],repeat=4):
... print ''.join(str(x) for x in p)
...
0000
0001
0010
0011
0100
0101
0110
0111
1000
1001
1010
1011
1100
1101
1110
1111
32. 組み合わせと組み合わせの置換 (itertools.combinations および itertools.combinations_with_replacement)
>>> itertools.combinations([1, 2, 3, 4, 5], 3) の c:
... print ''.join(str(x) for x in c)
...
123
124
125
134
135
145
234
235
245
345
>>> itertools.combinations_with_replacement([1, 2, 3], 2) の c:
... print ''.join(str(x) for x in c)
...
11
12
13
22
23
33
33. 並べ替え (itertools.permutations)
>>> itertools.permutations([1, 2, 3, 4]):
... print ''.join(str(x) for x in p)
...
1234
1243
1324
1342
1423
1432
2134
2143
2314
2341
2413
2431
3124
3142
3214
3241
3412
3421
4123
4132
4213
4231
4312
4321
34. リンクの反復 (itertools.chain)
>>> a = [1, 2, 3, 4]
>>> itertools.chain(itertools.combinations(a, 2), itertools.combinations(a, 3)) の p:
... print p
...
(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)
(1、2、3)
(1、2、4)
(1、3、4)
(2、3、4)
>>> itertools.chain.from_iterable(itertools.combinations(a, n) for n in range(len(a) + 1)) のサブセット
... サブセットを印刷
...
()
(1,)
(2,)
(3,)
(4,)
(1, 2)
(1, 3)
(1, 4)
(2, 3)
(2, 4)
(3, 4)
(1、2、3)
(1、2、4)
(1、3、4)
(2、3、4)
(1、2、3、4)
35. 指定された値で行をグループ化する (itertools.groupby)
>>> from オペレーター import itemgetter
>>> itertools をインポート
>>> infile として open('contactlenses.csv', 'r') を使用:
... data = [infile の行の line.strip().split(',')]
...
>>>データ = データ[1:]
>>> def print_data(行):
... print 'n'.join('t'.join('{: ...
>>> print_data(データ)
若い 近視 いいえ 減少しました なし
若い 近視 いいえ 普通 柔らかい
若い 近視 はい 減少しました なし
若い 近視 はい 普通 硬い
若い ハイパーメトロロープ いいえ 減少しました なし
若い ハイパーメトロロープ いいえ 普通 柔らかい
若い ハイパーメトロロープ はい 減少しました なし
若い ハイパーメトロロープ はい 普通 ハード
老視前 近視 いいえ 軽減 なし
老視前 近視 いいえ 普通 柔らかい
老視前 近視 はい 軽減 なし
老視前 近視 はい 普通 難しい
老視前 遠視 いいえ 軽減 なし
老視前 遠視 いいえ 普通 ソフト
老視前 遠視 はい 軽減 なし
老視前 遠視 はい 通常 なし
老眼 近視 なし 軽減 なし
老視 近視 いいえ 普通 なし
老視 近視 はい 軽減 なし
老眼 近視 はい 普通 難しい
老視 遠視 いいえ 軽減 なし
老視 遠視 いいえ 普通 ソフト
老視 遠視 はい 軽減 なし
老視 遠視 はい 普通 なし
>>> data.sort(key=itemgetter(-1))
>>>値の場合は、 itertools.groupby(data, lambda r: r[-1]):
のグループ ... print '-----------'
... print 'グループ: ' + 値
... print_data(グループ)
...
-----------
グループ: ハード
若い 近視 はい 普通 硬い
若い ハイパーメトロロープ はい 普通 ハード
老視前 近視 はい 普通 難しい
老眼 近視 はい 普通 難しい
-----------
グループ: なし
若い 近視 いいえ 減少しました なし
若い 近視 はい 減少しました なし
若い ハイパーメトロロープ いいえ 減少しました なし
若い ハイパーメトロロープ はい 減少しました なし
老視前 近視 いいえ 軽減 なし
老視前 近視 はい 軽減 なし
老視前 遠視 いいえ 軽減 なし
老視前 遠視 はい 軽減 なし
老視前 遠視 はい 通常 なし
老眼 近視 なし 軽減 なし
老視 近視 いいえ 普通 なし
老視 近視 はい 軽減 なし
老視 遠視 いいえ 軽減 なし
老視 遠視 はい 軽減 なし
老視 遠視 はい 普通 なし
-----------
グループ: ソフト
若い 近視 いいえ 普通 柔らかい
若い ハイパーメトロロープ いいえ 普通 柔らかい
老視前 近視 いいえ 普通 柔らかい
老視前 遠視 いいえ 普通 ソフト
老眼 遠視 いいえ 普通

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









MySQLには、無料のコミュニティバージョンと有料エンタープライズバージョンがあります。コミュニティバージョンは無料で使用および変更できますが、サポートは制限されており、安定性要件が低く、技術的な能力が強いアプリケーションに適しています。 Enterprise Editionは、安定した信頼性の高い高性能データベースを必要とするアプリケーションに対する包括的な商業サポートを提供し、サポートの支払いを喜んでいます。バージョンを選択する際に考慮される要因には、アプリケーションの重要性、予算編成、技術スキルが含まれます。完璧なオプションはなく、最も適切なオプションのみであり、特定の状況に応じて慎重に選択する必要があります。

この記事では、MySQLデータベースの操作を紹介します。まず、MySQLWorkBenchやコマンドラインクライアントなど、MySQLクライアントをインストールする必要があります。 1. mysql-uroot-pコマンドを使用してサーバーに接続し、ルートアカウントパスワードでログインします。 2。CreatedAtaBaseを使用してデータベースを作成し、データベースを選択します。 3. createTableを使用してテーブルを作成し、フィールドとデータ型を定義します。 4. INSERTINTOを使用してデータを挿入し、データをクエリし、更新することでデータを更新し、削除してデータを削除します。これらの手順を習得することによってのみ、一般的な問題に対処することを学び、データベースのパフォーマンスを最適化することでMySQLを効率的に使用できます。

JavaScriptは現代のWeb開発の基礎であり、その主な機能には、イベント駆動型のプログラミング、動的コンテンツ生成、非同期プログラミングが含まれます。 1)イベント駆動型プログラミングにより、Webページはユーザー操作に応じて動的に変更できます。 2)動的コンテンツ生成により、条件に応じてページコンテンツを調整できます。 3)非同期プログラミングにより、ユーザーインターフェイスがブロックされないようにします。 JavaScriptは、Webインタラクション、シングルページアプリケーション、サーバー側の開発で広く使用されており、ユーザーエクスペリエンスとクロスプラットフォーム開発の柔軟性を大幅に改善しています。

MySQLは、基本的なデータストレージと管理のためにネットワーク接続なしで実行できます。ただし、他のシステムとのやり取り、リモートアクセス、または複製やクラスタリングなどの高度な機能を使用するには、ネットワーク接続が必要です。さらに、セキュリティ対策(ファイアウォールなど)、パフォーマンスの最適化(適切なネットワーク接続を選択)、およびデータバックアップは、インターネットに接続するために重要です。

MySQLデータベースパフォーマンス最適化ガイドリソース集約型アプリケーションでは、MySQLデータベースが重要な役割を果たし、大規模なトランザクションの管理を担当しています。ただし、アプリケーションのスケールが拡大すると、データベースパフォーマンスのボトルネックが制約になることがよくあります。この記事では、一連の効果的なMySQLパフォーマンス最適化戦略を検討して、アプリケーションが高負荷の下で効率的で応答性の高いままであることを保証します。実際のケースを組み合わせて、インデックス作成、クエリ最適化、データベース設計、キャッシュなどの詳細な主要なテクノロジーを説明します。 1.データベースアーキテクチャの設計と最適化されたデータベースアーキテクチャは、MySQLパフォーマンスの最適化の基礎です。いくつかのコア原則は次のとおりです。適切なデータ型を選択し、ニーズを満たす最小のデータ型を選択すると、ストレージスペースを節約するだけでなく、データ処理速度を向上させることもできます。

MySQLパフォーマンスの最適化は、インストール構成、インデックス作成、クエリの最適化、監視、チューニングの3つの側面から開始する必要があります。 1。インストール後、INNODB_BUFFER_POOL_SIZEパラメーターやclose query_cache_sizeなど、サーバーの構成に従ってmy.cnfファイルを調整する必要があります。 2。過度のインデックスを回避するための適切なインデックスを作成し、説明コマンドを使用して実行計画を分析するなど、クエリステートメントを最適化します。 3. MySQL独自の監視ツール(ShowProcessList、ShowStatus)を使用して、データベースの健康を監視し、定期的にデータベースをバックアップして整理します。これらの手順を継続的に最適化することによってのみ、MySQLデータベースのパフォーマンスを改善できます。

Hash値として保存されているため、Navicatを介してMongoDBパスワードを直接表示することは不可能です。紛失したパスワードを取得する方法:1。パスワードのリセット。 2。構成ファイルを確認します(ハッシュ値が含まれる場合があります)。 3.コードを確認します(パスワードをハードコードできます)。

hadidb:軽量で高レベルのスケーラブルなPythonデータベースHadIDB(HadIDB)は、Pythonで記述された軽量データベースで、スケーラビリティが高くなっています。 PIPインストールを使用してHADIDBをインストールする:PIPINSTALLHADIDBユーザー管理CREATEユーザー:CREATEUSER()メソッド新しいユーザーを作成します。 Authentication()メソッドは、ユーザーのIDを認証します。 fromhadidb.operationimportuseruser_obj = user( "admin"、 "admin")user_obj。
