Python面接準備(3)のpythonデータ型


データ型
データ型-文字列
  • Pythonの基本データ型を列挙?

  • 答え:Python 3には、文字列(String)、数字(Digit)、リスト(List)、メタグループ(Tuple)、集合(Sets)、辞書(Dictionary)の6つの標準的なデータ型があります.
  • 可変データ型と非可変データ型の区別方法
  • 答:対象メモリアドレス方向から
    可変データ型:メモリアドレスが変わらない場合、値は変更できます(リストと辞書は可変タイプですが、辞書のkey値は可変タイプでなければなりません).可変データ型:メモリは変更され、値も変更されます.(数値、文字列、ブールタイプ、いずれも可変タイプ)id()メソッドでメモリアドレスの検出を行うことができます.
  • 「hello world」を頭文字大文字「Hello World」に変換
  • 答え:これは2つの単語の頭文字をすべて大文字にすることを要求する問題を見極めなければなりません.最初の単語の頭文字の大きさだけならcapitalizeだけでいいですが、ここは2つの単語なので、次の方法を使います.
    arr = "hello world".split(" ")
    new_str = f"{arr[0].capitalize()} {arr[1].capitalize()}"
    print(new_str)
    

    その後、コメントの中で次の方法に言及した友达がいました.ここでは、この友达の注意に感謝します.シナリオは次のとおりです.
    "hello world".title()
    

    とても簡単な一言でできます.
  • 文字列に数字のみが含まれていることを検出する方法

  • 答え:isdigitメソッドで、例は以下の通りです.
    s1 = "12223".isdigit()
    print(s1)
    
    s2 = "12223a".isdigit()
    print(s2)
    
    #    :
    #True
    #False
    
  • 文字列「ilovechina」を反転
  • 回答:
    s1 = "ilovechina"[::-1]
    print(s1)
    
  • Pythonの文字列フォーマット方法は何を知っていますか?

  • 答え:%s,format,fstring(Python 3.6からサポートされていますが、現在推奨されている書き方)
  • ある文字列の先頭と末尾にスペースがあり、例えば「adabdw」は、この文字列の前後のスペースをすべて削除する関数を書くように要求されています.

  • 答え:問題は関数を書くのでstripを直接使うことはできませんが、関数にカプセル化することができます.
    def strip_function(s1)return s1.strip()
    
    s1 = " adabdw "
    print(strip_function(s1))
    
  • 取得文字列"123456"最後の2文字.
  • 答え:スライス使用の考察、最後の2つの開始インデックスは-2で、コードは以下の通りです.
    a = "123456"
    print(a[-2::])
    
  • GBKとして符号化された文字列SをUTF-8符号化された文字列に変換するには、どのように操作すればよいか

  • 回答:
    a= "S".encode("gbk").decode("utf-8",'ignore')
    print(a)
    
  • (1)s="info:xiaoZhang 33 shandong"を正規区切り文字列で出力します[‘info’,‘xiaoZhang’,‘33’,‘shandong’].(2)a=「こんにちは中国」で、余分なスペースを除いて1つのスペースしか残っていません.

  • 回答:
    (1)コロンやスペースで切り分ける必要があります
    import re
    s = "info:xiaoZhang 33 shandong"
    res = re.split(r":| ", s)
    print(res)
    

    (2)
    s = "           "
    print(" ".join(s.split()))
    
  • (1)文字列を小文字に変換する方法.(2)一重引用符、二重引用符、三重引用符の違いは?

  • 答え:(1)文字列を用いたlower()メソッド.
    (2)一重引用符と二重引用符を単独で使うのと変わらないが、引用符の中に引用符を使う必要がある場合は、この二つを組み合わせて三重引用符を使う必要があり、同じ三重引用符も三重引用符と三重引用符に分けられ、どちらも声名の長い文字列の場合に使用し、docstringを使う場合は三重引用符を使う必要がある.
    データ型-リスト
  • AList=[1,2,3,1,2]が知られており、AListリスト要素を削除し、具体的なプロセスを書き出します.

  • 回答:
    list(set(AList))
    
  • どのように“1,2,3”を実現して[“1”,“2”,“3”
  • になります
    回答:
    s = "1,2,3"
    print(s.split(","))
    
  • 2つのlist,A,Bが与えられ、同じ要素と異なる要素を探し出す
  • 回答:
    A、B      :print(set(A)&set(B)) 
    A、B      :print(set(A)^set(B))
    
  • [[1,2],[3,4],[5,6]]このリストを展開すると,[1,2,3,4,5,6]
  • 回答:
    l = [[1,2],[3,4],[5,6]]
    x=[j for i in l for j in i]  
    print(x)
    
  • 集計リスト[1,5,7,9]および[2,2,6,8]
  • 答:extendと+を使ってもいいです.
    a = [1,5,7,9]
    b = [2,2,6,8]
    a.extend(b)
    print(a)
    
  • リストの要素を混乱させるにはどうすればいいですか?

  • 回答:
    import random
    
    a = [1, 2, 3, 4, 5]
    random.shuffle(a)
    print(a)
    

    データ型-辞書
  • 辞書操作におけるdelとpopの違い
  • 答え:delはインデックス(要素が存在する場所)に基づいて削除でき、値は返されません.popは、インデックスに基づいて値をポップアップし、その戻り値を受信することができる.
  • 辞書内の年齢順
  • d 1=[{‘name’:‘alice’,‘age’:38},{‘name’:‘bob’,‘age’:18},{‘name’:‘Carl’,‘age’:28},]答え:
    d1 = [
        {'name': 'alice', 'age': 38},
        {'name': 'bob', 'age': 18},
        {'name': 'Carl', 'age': 28},
    ]
    
    print(sorted(d1, key=lambda x:x["age"]))
    
  • 次の2つの辞書a={"A":1,"B":2},b={"C":3,"D":4}
  • をマージしてください.
    A:辞書をマージする方法はたくさんあります.a.update(b)や次の辞書を使ってパッケージを解くことができます.
    a = {"A":1,"B":2}
    b = {"C":3,"D":4}
    print({**a,**b})
    
  • どのように生成式の方式を使って1つの辞書を生成して、1段の機能コードを書きます.

  • 回答:
    #   3:      key   value    ;
    d = {'a':'1', 'b':'2'}
    
    print({v:k for k,v in d.items()})
    
  • どのように元グループ(「a」,「b」)と元グループ(1,2)を辞書{「a」:1,「b」:2}
  • に変えます
    zipの使用に答えますが、最後にzipオブジェクトを辞書に変換することを覚えておいてください.
    a = ("a", "b")
    b = (1, 2)
    print(dict(zip(a, b)))
    

    データ型-統合
  • 次の辞書のオブジェクトキーのタイプが正しくないのは?A:{1:0,2:0,3:0} B:{“a”:0, “b”:0, “c”:0} C: {(1,2):0, (2,3):0} D: {[1,2]:0, [2,3]:0}

  • A:D辞書のキーはhash可能なオブジェクトのみで、リストは可変タイプでhash可能なオブジェクトではないので、リストを辞書のキーにすることはできません.
  • 辞書を交換する方法{"A":1,"B":2}のキーと値
  • 回答:
    s =  {"A":1,"B":2}
    
    #   :
    dict_new = {value:key for key,value in s.items()}
    
    #   :
    new_s= dict(zip(s.values(),s.keys()))
    
  • Pythonではtupleとlistの変換をどのように実現しますか?

  • 答え:Pythonでのタイプ変換は、一般的にタイプ強転で完了するtuple転listはlist()メソッドlist転tuple tuple()メソッド
  • リストに対してスライス操作を用いて要素の一部を選択できることを知っていますが、ジェネレータタイプのオブジェクトに対して同じ機能を実現するにはどうすればいいのでしょうか.

  • 答え:このテーマはPython標準ライブラリのitertoolsモジュールの速い把握状況を考察し、このモジュールはジェネレータを操作するいくつかの方法を提供した.ジェネレータタイプではislice法を用いてスライスの機能を実現した.例は以下の通り
    from itertools import islice
    gen = iter(range(10)) #iter()         
    #         ,         ,         ,       
    for i in islice(gen,0,4): 
        print(i)
    
  • [i for i in range(3)]をジェネレータ
  • に変更してください.
    答:リスト生産式の中括弧を小括弧に変更することで、生産器の機能を実現しました.
    (i for i in range(3))
    
  • a=「hello」およびb=「こんにちは」はbytesタイプ
  • に符号化される.
    答え:このテーマは全部で3つの方法で、1つ目は文字列の前にbを加えて、2つ目はbytes方法を使って、3つ目は文字列encode方法を使っています.具体的なコードは以下の通りであり、abcは3つの状況を表す.
    a = b"hello"
    b = bytes("  ", "utf-8")
    c = "  ".encode("utf-8")
    print(a, b, c)
    
  • 次のコード出力結果は何ですか?a = (1,2,3,[4,5,6,7],8) a[2] = 2

  • 答え:私たちはメタグループの要素が変えられないことを知っているので、このテーマの答えは異常です.
  • 次のコード出力の結果は何ですか?a = (1,2,3,[4,5,6,7],8) a[3][0] = 2

  • 答え:前に私はメタグループの中の要素は変えることができないと言って、この言叶は厳密に言えば正确ではありませんて、もしメタグループの中の要素自体が可変のタイプで、例えばリストで、それではこの要素の中のオブジェクトを操作する时、そのメモリのアドレスも不変です.a[3]対応する要素はリストであり、その後リストの最初の要素に値を付与するので、最後の結果は:(1,2,3,[2,5,6,7],8)