不使用索引更改列表的值

时间:2015-06-09 17:38:59

标签: python list python-2.7 dictionary

userId

实施例:     apply_coder(" Hello,world!",build_encoder(3))应该返回

  

'!Khoor,czruog'

相反,它会返回

  

"你好,世界!"

但是,如果我在if条件下使用打印字母语句,则会打印正确的字母。

4 个答案:

答案 0 :(得分:3)

重新绑定当前的迭代变量并不会修改列表(希望 - 这将是一个非常烦人的副作用)。

此外,将coder_dict重新绑定到def apply_coder(text, coder): return ''.join(coder.get(letter, letter) for letter in text) 是没用的,您可以迭代字符串。简而言之,解决方案是使用修改后的字母重建列表......既然您不需要列表本身,您也可以使用生成器表达式:

override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell {
    let cell = self.tableView.dequeueReusableCellWithIdentifier("Cell", forIndexPath: indexPath) as! UITableViewCell

    if (self.resultSearchController.active) {
        cell.textLabel?.text = filteredTableData[indexPath.row]

        return cell
         }
    else {

    cell.textLabel?.text = TableTitle[indexPath.row]

return cell
}
}

答案 1 :(得分:0)

通过更改letter更改列表text_list中的任何内容。您应该构建一个新列表而不是编码结果:

def apply_coder(text, coder):
    ret_val = []
    coder_dict = coder
    for letter in text:
        if letter in coder_dict:
            letter = coder_dict[letter]
            print letter
        ret_val.append(letter)
    return ''.join(ret_val)

这也意味着您首先不必将text列入名单。

答案 2 :(得分:0)

语句letter = coder_dict[letter]只需查找letter中的coder_dict密钥,并将该值分配给letter,但不会更改text_list。它打印那封信。但是,您根本不会修改enumerate。有几种方法可以做到这一点,例如使用def apply_coder(text, coder): text_list = list(text) for val,letter in enumerate(text_list): text_list[val] = coder.get(letter, letter) return ''.join(text_list)

list

这将枚举join(),然后在可能的情况下使用字母查找重新分配每个索引元素,否则重新分配字母本身,然后list returnfunction countonBG(range,colorref) { var sheet = SpreadsheetApp.getActiveSheet(); var color = sheet.getRange(9, 1).getBackground(); var range = sheet.getRange(1, 1, 7, 6); var rangeVal = range.getValues(); var count = 0; var allColors = range.getBackgrounds(); Logger.log(allColors); for (var i = 0; i < rangeVal.length; i++) { for (var j = 0; j < allColors[0].length; j++) { if (allColors[i][j] == color) count += 1; } } Logger.log(count); }

答案 3 :(得分:0)

这与不久前提出的关于加密/交换信件的问题非常类似。

以下代码由alec_djinn

提供
decrypted = 'abcdefghijklmnopqrstuvwxyz' #normal alphabet
encrypted = 'MNBVCXZLKJHGFDSAPOIUYTREWQ' #your "crypted" alphabet

#Encription
text = 'cryptme' #the string to be crypted
encrypted_text = ''
for letter in text:
    encrypted_text += encrypted[decrypted.find(letter)]
print encrypted_text
#will print BOWAUFC

#Decription
text = encrypted_text #"BOWAUFC" in this example
decrypted_text = ''
for letter in text:
    decrypted_text += decrypted[encrypted.find(letter)]
print decrypted_text
#will print cryptme

下面还提供了指向此链接的链接。

How to 'encrypt' a file