Python研究ノート(上)

1.コレクションライブラリのCounterメソッドを使用して、文字列内の各単語の出現回数をカウントします

>>> from collections import Counter
>>> f=Counter(d)
>>> f
Counter({
    
    'l': 9, ';': 6, 'h': 6, 'f': 5, 'a': 4, 'j': 3, 'd': 3, 's': 2, 'k': 1, 'g': 1, 'b': 1})

2.辞書はキーに従って小さいものから大きいものへとソートされます

>>> dict={
    
    "name":"zs","age":18,"city":"深圳","tel":"1362626627"}
>>> b=list(sorted(dict.keys(),reverse=False))
>>> b
['age', 'city', 'name', 'tel']
>>> k=list(sorted(dict.items(),reverse=False))
>>> k
[('age', 18), ('city', '深圳'), ('name', 'zs'), ('tel', '1362626627')]

3.ラムダ関数を使用して2つの数値を乗算します

>>> sums = lambda a,b:a*b
>>> sums(2,3)
6

4.重複する文字を削除し、出力を小さいものから大きいものに並べ替えます

1.重複排除を設定し、重複排除をリストに設定し、並べ替え方法を使用して並べ替えます。reverse= Falseは、小さいものから大きいものに並べ替えます。

2.リストは定数データ型であり、s.sortには戻り値がないため、コメント化されたコードは正しく記述されていません。

>>> s = "ajldjlajfdljfddd"
>>> set(m)
{
    
    'l', 'a', 'd', 'f', 'j'}
>>> n.sort()
>>> n
['a', 'd', 'f', 'j', 'l']
>>> ''.join(n)
'adfjl'

5. python2とpython3の違いは何ですか?リスト6

1. Python3でprintを使用する場合、印刷されたコンテンツはprint( 'hi')のように括弧で囲む必要があります。Python2は括弧またはスペースを使用してprint'hi 'のように印刷されたコンテンツを区切ることができます。

2. python2 range(1,10)はリストを返し、python3はイテレータを返し、メモリを節約します

3. python2ではasciiエンコーディングを使用し、pythonではutf-8エンコーディングを使用します

4. python2のUnicodeは文字列シーケンス、strはバイトシーケンス、strはpython3の文字列シーケンス、byteはバイトシーケンスを意味します

5. python2では、中国語を正常に表示するために、python3では不要なコーディングステートメントが導入されています。

6. python2のraw_input()関数とpython3のinput()関数

6. filterメソッドは、リスト内のすべての奇数を検索し、新しいリストを作成します

filter()関数は、シーケンスをフィルタリングし、条件を満たさない要素を除外し、条件を満たしている要素の新しいリストを返すために使用されます。1つ目は関数、2つ目はシーケンスの2つのパラメーターを受け取る必要があります。シーケンスの各要素は、判断のためのパラメーターとして関数に渡され、TrueまたはFalseを返し、最後にTrueを返す要素を返します。新しいリストに配置されます。

>>> a =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> def odd(a):
...     return a%2==1
... 
>>> new_l = filter(odd, a)
>>> new_l
<\filter object at 0x7f945b6274a8>
>>> new = [i for i in new_l]
>>> new
[1, 3, 5, 7, 9]	

7. filterメソッドは、リスト内のすべての奇数を検索し、新しいリストを作成します

>>> a =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> b=[i for i in a if i%2==1]
>>> b
[1, 3, 5, 7, 9]

8. 2つのリスト[1,5,7,9]と[2,2,6,8]は、[1,2,2,3,6,7,8,9]にマージされます。

extendsは、別のセットの要素を1つずつリストに追加できます。これは、全体としての追加とは異なります。

append:
>>> a=[1,5,7,9]
>>> b=[2,2,6,8]
>>> a.append(b)
>>> a
[1, 5, 7, 9, [2, 2, 6, 8]]
extend:
>>> a.extend(b)
>>> a
[1, 5, 7, 9, 2, 2, 6, 8]
#等价于a+b

9. Pythonでファイルを削除し、Linuxコマンドでファイルを削除する方法

python:os.remove(ファイル名)

Linux:rmファイル名

10.データベース最適化クエリメソッド

外部キー、インデックス、ユニオンクエリ、特定のフィールドの選択など。

11.統計グラフ(棒グラフ、折れ線グラフなど)の描画に使用できるオープンソースライブラリをリストしてください。サードパーティも問題ありません。

pychart、matplotlib

12.正規表現マッチングでは、(。)と(。?)マッチング違いは何ですか?

(。*)は貪欲なマッチングであり、通常の条件を満たすために可能な限り後方にマッチングします

(。*?)は貪欲ではないマッチングであり、通常のマッチングにできるだけ一致しません

>>> import re
>>> str = '&lt;a>&lt;a>哈哈&lt;/a>呵呵&lt;/a>'
>>> s1 =re.findall("&lt;a>(.*)&lt;/a>", str)
>>> s1
['&lt;a>哈哈&lt;/a>呵呵']
>>> s2 =re.findall("&lt;a>(.*?)&lt;/a>", str)
>>> s2
['哈哈']

13. [[1,2]、[3,4]、[5,6]]リストを展開するコード行で、[1,2,3,4,5,6]を取得します。

>>> a=[[1,2],[3,4],[5,6]]
>>> b=[j for i in a for j in i]
>>> b
[1, 2, 3, 4, 5, 6]	

14. x = "abc"、y = "def"、z = ["d"、 "e"、 "f"]、それぞれx.join(y)とx.join(z)によって返される結果を見つけます

>>> x='abc'
>>> y='def'
>>> z=['d','e','f']
>>> p=x.join(y)
>>> p
'dabceabcf'
>>> g=x.join(z)
>>> g
'dabceabcf'

15. zip()関数の使用法を例を挙げて説明します

>>> a=[3,4]
>>> b=[1,2]
>>> s=[i for i in zip(a,b)]
>>> s
[(3, 1), (4, 2)]
##其中a,b可以为元组a=(3,4),也可以为字符串a='34'
>>> q='asd'
>>> w='ip'
>>> f=[i for i in zip(q,w)]
>>> f
[('a', 'i'), ('s', 'p')]
##字符取最短的元素的长度

16. a = "Zhangming 98 points"、re.subを使用して98を100に置き換えます

>>> a="张明 98分"
>>> d=re.sub(r'\d+','100',a)
>>> d
'张明 100分'

17.Python操作の効率を改善する方法

1)多くのメモリを節約できるため、ジェネレータを使用します

2)コードの過度の繰り返し実行を回避するためのループコードの最適化

3)コアモジュールにCython PyPyなどを使用して、効率を向上させます

4)マルチプロセス、マルチスレッド、コルーチン

5)複数のif elif条件判定を最初に行うことができます。これにより、プログラム判定の数を減らし、効率を向上させることができます。

18.mysqlとredisの違いを簡単に説明します

redis:インメモリ非リレーショナルデータベース、データはメモリに高速に保存されます

2)mysql:リレーショナルデータベース、データはディスクに保存され、取得のための特定のIO操作があり、アクセス速度は比較的遅い

19.バグに対処する方法

1)print()によって出力された詳細エラーをprint()に実行できます。これは、セグメント化された検出プログラムに問題があるかどうかにかかわらず、上記のコードに通常問題がないことを示します。jsの場合は、次のことができます。 alertまたはconsole.log

2)サードパーティのフレームワークが関係している場合は、公式ドキュメントまたはいくつかの技術ブログを確認します

3)バグの管理と分類については、一般テストでは、teambinなどのバグ管理ツールを使用してテストしたバグを記録し、1つずつ変更します。変更プロセスは、ビジネスロジックを理解し、細心の注意を払うことでもあります。私たちのプログラミングロジックメソッドのいくつかのメモと記録も収集します。

4)パッケージの誘導の問題、都市のポジショニングのマルチトーン文字に起因する表示エラー

20.定期的なマッチング、マッチング日2018-10-20

>>> import re
>>> url='https://www.MuMu?datetime=2018-10-20%202018-03-20&page=1'>>> res = re.findall(r'datetime=(.*?)%20(.*?)&',url)
>>> res
[('2018-10-20', '2018-03-20')]

21、小数点以下2桁を保持

>>> a="%.02f"%3.1415926
>>> a
'3.14'
>>> a="%.03f"%3.1415926
>>> a
'3.142'

22.一般的なステータスコードと意味を一覧表示します

200 OK:リクエストは正常に処理されます

204コンテンツなし:リクエストは正常に処理され、エンティティ本体は返されませんでした

206部分的なコンテンツ:GET範囲要求は正常に処理されました

301恒久的に移動:恒久的なリダイレクト、リソースには恒久的に新しいURIが割り当てられました

302検出:一時的なリダイレクト。リソースに新しいURIが一時的に割り当てられました

303その他を参照:一時的なリダイレクト。直接取得にGETを使用する予定です。

304変更なし:送信された条件付き要求が満たされませんでした

307一時的なリダイレクト:一時的なリダイレクト、POSTはGETになりません

400不正な要求:要求メッセージの構文エラーまたはパラメーターエラー

401 Unauthorized:HTTP認証が必要であるか、認証が失敗します

403 Forbidden:要求されたリソースは拒否されました

404 Not Found:要求されたリソースが見つかりませんでした(サーバーが理由なく拒否されました)

500内部サーバーエラー:サーバー障害またはWebアプリケーション障害

503 Service Unavailable:サーバーの過負荷またはメンテナンスのためのダウンタイム

####整数を入力し、数値の階乗の最初のゼロ以外の数値を返します。たとえば、結果が1200の場合、出力2 ####アイデア:桁数が通常の長さを超えるため、結果は毎回計算されます。末尾の0を削除する必要があります `` `shell a = input(" input a integer: ")num = 1 for i in range(1、int(a)+1):num * = i num = int(str(num).replace( '0'、 ''))result = str(num).replace( '0'、 '')[-1] print(result) `` `### #タイトル:はい1、2、3、4桁、繰り返し桁なしでいくつの異なる3桁を形成できますか?いくつだ?##### star ==== `` `shell sums = 0 for i in range(1、5):for j in range(1、5):for z in range(1、5):if i! = j and j!= z:sums + = 1 print(i、j、z)print(sums) `` `##### end ====

100を足した後の整数は完全な平方数であり、168を足した後は完全な平方数ですが、その数は何ですか?

星====
import math

for i in range(10000):
    if math.sqrt(i+100) - int(math.sqrt(i+100)) == 0:
        x = int(math.sqrt(i+100))
        if math.sqrt(i+268) - int(math.sqrt(i+268)) == 0:
            y = int(math.sqrt(i+268))
            print(x,y)
            # if x*x == 100 + i and y*y == i+268:
            #     print(x,y)
終了====

トピック:3つの整数x、y、zを入力します。これらの3つの数値を小さいものから大きいものまで出力してください。

星====
x = input('输入第一个数')
y = input('输入第一个数')
z = input('输入第一个数')
if int(x) > int(y):
    if int(x) > int(z):
        if int(y) > int(z):
            print(z, y, x)
        else:
            print(y, z, x)
    else:
        print(y, x, z)
else:
    if int(x) < int(z):
        if int(y) < int(z):
            print(x, y, z)
        else:
            print(x, z, y)
    else:
        print(z, x, y)

# 内置方法
l = [int(x), int(y), int(z)]
# news = l.sort()
news= sorted(l)
news_1= sorted(l, reverse=True) # True:倒序
# sorted:不改变原列表、sort则会改变源列表
print(l, news, news_1)
終了====

問題:101から200の間にある素数の数を判別し、すべての素数を出力します。

アイデア:一般的な分野では、正の整数nの場合、2からsqrt(n)までのすべての整数で除算すると、均等に割り切れないため、nは素数になります。

import math
num = input("输入一个101-200之间的整数")
def check(n):
    for i in range(2, int(math.sqrt(n)) + 1):
        if n % i == 0:
            return False
    return True
print(check(int(num)))

おすすめ

転載: blog.csdn.net/Lin_Hv/article/details/105792281