Pythonスタディノート7.21(54-時間通りにパンチイン-QQ)

Task1
1.変数、演算子、およびデータ型
1.コメント
(1)単一行コメント:Pythonでは、#はコメントを表し、行全体に作用します。
(2)複数行コメント: '' '' ''または "" "" ""を使用して間隔コメントを示し、三重引用符
囲まれたすべてのコンテンツにコメントを付けます。
2.演算子
(1)算術演算子:加算、減算、乗算、除算、除算(//)剰余(%)累乗(**)
(2)比較演算子:より大きい(>)より小さい(<)より大きいまたは等しい(> =)
以下(<=)等しい(==)等しくない(!=)
(3)論理演算子および(および)または(または)ない(ない)
(4)ビット演算子:ビット単位の否定(〜)ビット単位のAND(&)ビット単位のOR(|)
ビット単位のXOR(^)左シフト(<<)右シフト(>>)
(5)3値演算子:
if x <y:
small = x
else :
small = yは次と
同等です:
small = x if x <y else y
(6)その他の演算子:存在する(in)存在しない(not in)
is(is)is not(is not)
is、is not compare two変数
==、!=のメモリアドレスは
、2つの変数の値比較します比較する2つの変数が、不変のアドレス(strなど)を持つ型を指している場合、
is、is not、および==、!=完全に同等です。
2つの対照的な変数は、変数アドレスタイプ(リスト、辞書、タプル
など)を指し、2つの間に違いがあります。

[辞書(dict)は、Pythonの唯一のマッピングタイプです。{}で囲まれたキーと値のペアで構成されます。辞書のキーは一意です。保存するときは、キーに基づいてメモリアドレスを計算します。次にキーを保存します。 -このアドレスの値。このアルゴリズムはハッシュアルゴリズムと呼ばれます]
[(タプル)祖先は不変のリストです
祖先は()で表され、要素はコンマで区切られ、データ型に制限はありません]

演算子の優先順位:単項演算子は二項演算子よりも優れています。最初に算術演算、次にシフト演算、最後にビット演算。論理演算が最終的に結合されます。

3.変数と割り当て変数を
使用する前に、まず変数を割り当てる必要があります。
変数名には文字、数字、アンダースコアを含めることができますが、変数名を数字で始めることはできません。
Python変数名では大文字と小文字が区別されます、foo!= Foo。

4.データ型と変換
整数型(int):整数、
浮動小数点型(float):小数付き
ブール型(bool):true / false
[bin(a)はバイナリ形式のaを意味します]

浮動小数点型の小数点の後にn桁を保持したい場合があります。これは、decimalオブジェクトとdecimalパッケージのgetcontext()メソッドを使用して実現できます。導入方法は以下のとおりです。

import decimal
from decimal import Decimal

次のように使用します。

b = Decimal(1) / Decimal(3)
print(b)

# 0.3333333333333333333333333333

Pythonには幅広い用途のパッケージがたくさんあります。使用したものをインポートできます。パッケージもオブジェクトであり、上記のdir(decimal)を使用してそのプロパティとメソッドを確認することもできます。

ブール(ブール)変数は、TrueとFalseの2つの値のみを取ることができます。デジタル操作でブール変数を使用する場合は、1と0を使用してTrueとFalseを表します。True値とFalse値を変数に直接割り当てることに加えて、bool(X)を使用して変数を作成することもできます。ここで、Xは基本タイプ(整数、浮動小数点、ブール)、コンテナータイプ:文字列、タプル、リスト、辞書、およびセット。詳細は次のとおりです。
(1)ブールは基本型変数に作用します。Xが整数0、浮動小数点0.0、bool(X)がTrue、残りがFalseでない限り。
(2)Boolはコンテナタイプの変数に作用します。Xが空の変数でない限り、bool(X)はTrueで、残りはFalseです。

型情報を取得する方法:
(1)型情報を取得するtype (object)
(2)オブジェクトが既知の型であるかどうかを判別するisinstance(object、classinfo)。
[注:type()は、サブクラスを親型とは見なさず、継承関係も考慮しません。isinstance()は、サブクラスを親クラスタイプと見なし、継承関係を考慮します。

型変換:
整数に変換int(x、base = 10)
文字列に変換str(object = '')
浮動小数点に変換float(x)

5. print()関数の
構造:print(* objects、sep = ''、end = '\ n'、file = sys.stdout、flush = False)
機能は次のとおりです。
(1)オブジェクトを次のようにフォーマットします。 string出力はストリームファイルオブジェクトファイルに出力されます。その中で、すべての非キーワードパラメータはstr()メソッドに従って文字列出力に変換されます;
(2)キーワードパラメータsepは、複数のパラメータが出力されるときの中央の区切り文字などの実現区切り文字です;
(3)キーワードパラメータendは出力の最後の文字で、デフォルトは新行文字です\ n;
(4)キーワードパラメータfileは、ストリーム出力を定義するファイルであり、標準のシステム出力sys.stdoutにすることができます。 、または別のファイルとして再定義できます。
(5)キーワードパラメータflushは、キャッシュせずにコンテンツをストリームファイルにすぐに出力することです。

練習用の質問

1.(1)単一行コメント:Pythonでは、#はコメントを表し、行全体に作用します。
(2)複数行コメント: '' '' ''または "" "" ""を使用して間隔コメントを示し、三重引用符で囲まれたすべてのコンテンツに注釈を付けます

2.演算子:算術演算子、比較演算子、論理演算子、ビット演算子、3項演算子、その他の演算子(in、isなど)
優先度:1項演算子は2項演算子よりも優れています。最初に算術演算、次にシフト演算、最後にビット演算。論理演算が最終的に結合されます。

3. isは、2つの変数のメモリアドレスを比較しません;
==、!=
2つの変数の値比較します; 2つの変数を比較する場合、それらはすべて不変のアドレス(strなど)を持つタイプを指します。 is、is not and ==、!=完全に同等です。
比較する2つの変数が変数アドレスタイプ(list、dictなど)を指している場合、2つの間に違いがあります。

4.整数(int)、浮動小数点(float)、ブール(bool)
型変換:整数int(x、base = 10);文字列str(object = '');に変換浮動小数点型floatに変換(バツ)

2.ビット演算
1.元のコード、1の補数、および1の補数の
バイナリには、元のコード、1の補数、および1の補数の3つの異なる表現形式があります。コンピューターは補数を使用して表現します。最上位ビットは符号ビット、0は正の数、1は負の数を意味します。ビット演算では、符号ビットも演算に関与します。

  • 元のコード:はそのバイナリ表現です(最上位ビットは符号ビットであることに注意してください)。
  • 逆数コード:正の数の逆数コードは元のコードであり、負の数の逆数コードは変更されていない符号ビットであり、残りのビットは反転されます(ビットごとの正の数の反転に対応)。
  • 補数:正の数の補数は元のコードであり、負の数の補数は補数+1です。

2.ビット単位の非演算(〜)
は、numの補数のすべての0と1を反転します(0は1になり、1は0になります)。

3.
対応する両方のビットが1の場合、ビットごとのAND演算(&)は1のみです。

4.
対応する2つのビットの1つが1である限り、ビットごとのOR演算(|)は1です。

5.ビット単位のXOR演算(^)
は、対応する2つのビットが異なる場合にのみ1になります。
排他的論理和演算の性質:可換法則と結合法則を満たす

A^B = 
A^B^A: = A^A^B = B 

6.ビット単位の左シフト演算(<<)
num << inumのバイナリ表現をiビットだけ左に移動します。

7.ビット単位の右シフト演算(>>)
num >> i numiビットのバイナリ表現を右にシフトして得られる値。

8.ビット演算を使用して高速計算を実現します。
(1)2から<<、>>までの倍数をすばやく計算します。

n << 1 -> 计算 n*2
n >> 1 -> 计算 n/2,负奇数的运算不可用
n << m -> 计算 n*(2^m),即乘以 2 的 m 次方
n >> m -> 计算 n/(2^m),即除以 2 的 m 次方

(2)^を介して2つの整数をすばやく交換します。

a ^= b
b ^= a
a ^= b

これは:

(3)&(-a)を使用して、aの終わりの位置1にある整数をすばやく取得します。

00 00 01 01 -> 5
&
11 11 10 11 -> -5
---
00 00 00 01 -> 1

00 00 11 10 -> 14
&
11 11 00 10 -> -14
---
00 00 00 10 -> 2

9.ビット演算を使用して整数のセットを実現します
数値の2進表現は、セットと見なすことができます(0はセットにないことを意味し、1はセットにあることを意味します)。
たとえば、セット{1、3、4、8}は01 00 01 10 10として表すことができます。つまり、バイナリの1.3.4.8ビットは1であり、セット内にあることを示します。 0はセットに含まれていません。

要素とコレクションの操作:

a | (1<<i)  -> 把 i 插入到集合中,即对应位变为1
a & ~(1<<i) -> 把 i 从集合中删除,即对应位变为1
a & (1<<i)  -> 判断 i 是否属于该集合(零不属于,非零属于)

[Pythonの整数は補数で格納されます。Pythonの整数は長さに制限がなく、オーバーフローしません。
【負の数の補数(10進表現)を取得するには、16進数の0xffffffffでビット単位のAND演算を手動で実行し、それをbin()に渡して出力し、負の数の補数表現を行う必要があります。番号が取得されます。

練習用の質問:
コードは次のとおりです。

class Solution:
 public:
  def singleNumber(self, nums: List[int]) -> int:
  self = 0;
  for (int i = 0; i<nums.size(); ++i)
   self = self^nums[i];
  return self;
    
 
————————————————
版权声明:本文为CSDN博主「_kean」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/C1029323236/article/details/86653188

おすすめ

転載: blog.csdn.net/m0_45672993/article/details/107498900