Rumah  >  Soal Jawab  >  teks badan

Bertanya tentang masalah tugasan senarai dalam Python

Kenapa

s = [1, 2, 3, 4, 5, 6]
i = 0
i = s[i] = 3
Hasilnya ialah: [1, 2, 3, 3, 5, 6] dan Bukan [3, 2, 3, 4, 5, 6]

女神的闺蜜爱上我女神的闺蜜爱上我2686 hari yang lalu955

membalas semua(6)saya akan balas

  • PHP中文网

    PHP中文网2017-06-12 09:26:18

    Anda boleh merujuk artikel yang saya tulis di bawah: Python: The Pitfalls of Chained Assignment

    balas
    0
  • 扔个三星炸死你

    扔个三星炸死你2017-06-12 09:26:18

    Mengikut penyata Tugasan:

    a = b = c = d = ... = E

    bersamaan dengan

    a = E
    b = E
    c = E
    d = E
    ...

    Jadi: i=s[i]=3 bersamaan dengan:

    i = 3
    s[i] = 3

    tugasan dalam Python ialah pernyataan, bukan operator, jadi ungkapan (a=b) akan menghasilkan ralat sintaks, dan penyataan tugasan tidak mempunyai nilai.

    balas
    0
  • 怪我咯

    怪我咯2017-06-12 09:26:18

    Rujukan https://stackoverflow.com/que...

    bersamaan dengan

    s = [1, 2, 3, 4, 5, 6]
    i = 0
    temp_value = 3
    i = temp_value
    s[i] = temp_value
    

    Mula-mula, i menjadi 3, dan kemudian nilai s[i] diberikan

    balas
    0
  • 滿天的星座

    滿天的星座2017-06-12 09:26:18

    Melihat kembali keputusan, i=3 telah dilaksanakan sebelum s[i] = 3.

    Tidak bolehkah anda menulisnya dalam dua ayat yang berasingan?

    balas
    0
  • 仅有的幸福

    仅有的幸福2017-06-12 09:26:18

    Anda boleh menggunakan PythonTutor.com
    i = s[i] = 3 Baris itu pada asasnya melaksanakan i=3 dan s[i]=3 berturut-turut

    balas
    0
  • typecho

    typecho2017-06-12 09:26:18

    i = s[i] = 3 等价于 i = 3; s[i] = 3

    Gunakan modul dis untuk menganalisis proses pelaksanaan:

    >>> def f():
        s = [1, 2, 3, 4, 5, 6]
        i = 0
        i = s[i] = 3
    
        
    >>> import dis
    >>> dis.dis(f)
      2           0 LOAD_CONST               1 (1)
                  3 LOAD_CONST               2 (2)
                  6 LOAD_CONST               3 (3)
                  9 LOAD_CONST               4 (4)
                 12 LOAD_CONST               5 (5)
                 15 LOAD_CONST               6 (6)
                 18 BUILD_LIST               6
                 21 STORE_FAST               0 (s) # s = [1, 2, 3, 4, 5, 6]
    
      3          24 LOAD_CONST               7 (0)
                 27 STORE_FAST               1 (i) # i = 0
    
      4          30 LOAD_CONST               3 (3) # 常量3 入栈
                 33 DUP_TOP                        # 复制栈顶,也就是 常量3
                 34 STORE_FAST               1 (i) # i = 3
                 37 LOAD_FAST                0 (s)
                 40 LOAD_FAST                1 (i)
                 43 STORE_SUBSCR                   # s[i] = 3
                 44 LOAD_CONST               0 (None) # 返回 None
                 47 RETURN_VALUE

    Contoh tulisan berasingan

    >>> def f2():
        s = [1, 2, 3, 4, 5, 6]
        i = 0
        i = 3
        s[i] = 3
    
        
    >>> dis.dis(f2)
      2           0 LOAD_CONST               1 (1)
                  3 LOAD_CONST               2 (2)
                  6 LOAD_CONST               3 (3)
                  9 LOAD_CONST               4 (4)
                 12 LOAD_CONST               5 (5)
                 15 LOAD_CONST               6 (6)
                 18 BUILD_LIST               6
                 21 STORE_FAST               0 (s) # s = [1, 2, 3, 4, 5, 6]
    
      3          24 LOAD_CONST               7 (0)
                 27 STORE_FAST               1 (i) # i = 0
    
      4          30 LOAD_CONST               3 (3)
                 33 STORE_FAST               1 (i) # i = 3
    
      5          36 LOAD_CONST               3 (3)
                 39 LOAD_FAST                0 (s)
                 42 LOAD_FAST                1 (i)
                 45 STORE_SUBSCR                   # s[i] = 3
                 46 LOAD_CONST               0 (None)
                 49 RETURN_VALUE
    >>> 

    balas
    0
  • Batalbalas