<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def backbone_bond_lengths(self):
 """Dictionary containing backbone bond lengths as lists of floats. Returns ------- bond_lengths : dict Keys are `n_ca`, `ca_c`, `c_o` and `c_n`, referring to the N-CA, CA-C, C=O and C-N bonds respectively. Values are lists of floats : the bond lengths in Angstroms. The lists of n_ca, ca_c and c_o are of length k for a Polypeptide containing k Residues. The list of c_n bonds is of length k-1 for a Polypeptide containing k Residues (C-N formed between successive `Residue` pairs). """

        bond_lengths = dict(
            n_ca=[distance(r['N'], r['CA'])
                  for r in self.get_monomers(ligands=False)],
            ca_c=[distance(r['CA'], r['C'])
                  for r in self.get_monomers(ligands=False)],
            c_o=[distance(r['C'], r['O'])
                 for r in self.get_monomers(ligands=False)],
            c_n=[distance(r1['C'], r2['N']) for r1, r2 in [
                (self[i], self[i + 1]) for i in range(len(self) - 1)]],
        )
        return bond_lengths