[英]I try to update list value inside my function, but it doesnt update any value
def find_ana(s):
word_dict, number, pointer = {}, {}, {}
a = list(set(s))
answer = []
for i in range(len(a)):
word_dict[a[i]] = []
number[a[i]] = 0
pointer[a[i]] = 0
for i in range(len(s)):
word_dict[s[i]].append(i)
number[s[i]] += 1
pointer[s[i]] += 1
answer.append("c")
sssss = max(number, key=number.get)
if number[sssss] > len(s):
answer = "IMPOSSIBLE"
return answer
else:
while len(number) != 0:
m = max(number, key=number.get)
number_m = number[m]
number.pop(m, None)
n = min(pointer, key=pointer.get)
number_n = word_dict[n]
pointer.pop(n, None)
while number_m != 0:
ba = number_n.pop()
answer[ba] = m
number_m = number_m - 1
if len(number_n) == 0:
n = min(pointer, key=pointer.get)
pointer.pop(n, None)
number_n = word_dict[n]
elif number_m == 0 and len(number_n) != 0:
pointer[n] = len(number_n)
return answer
您好,這是我的代碼,用於找出任何位置都沒有多余字母的字符串。 在里面我更新了 pointer[b]=len(number_n) 但它根本沒有改變。 你能告訴我如何更新它以便我得到答案嗎? 就像我放了字符串,想要得到一個按新順序排列的字母列表 st s[I]!=answer[I]。 例如我把 ['s','t','a','r','t'] 並想得到 ['t','s','t','a','r'] ,但我只有 ['c','c','c','c','c']
如果我理解正確的話,您需要一個函數,它以沒有與原始單詞匹配的字符(相同位置的相同字母)的方式對給定字符串進行混洗。
一種方法是
import random
def shuffle_word(word, max_attempts=1000):
letters = list(word)
for attempt in range(max_attempts):
random.shuffle(letters)
new_word = "".join(letters)
if not any(a == b for (a, b) in zip(word, new_word)):
return new_word
raise RuntimeError("Could not find a suitable variation")
print(shuffle_word("start"))
並獲得與此規則匹配的所有排列,
import itertools
def get_word_variations(word):
letters = tuple(word)
for combo in itertools.permutations(letters):
if not any(a == b for (a, b) in zip(letters, combo)):
yield "".join(combo)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.