[英]create a list by multiplying list, indexes remain attached
我正在嘗試解決這個問題: https://leetcode.com/problems/letter-combinations-of-a-phone-number/但是當將值附加到列表中的第一個列表時,它 append 它也是第 4 個和第第 7 名,因為它們仍被計入第一個列表。 是因為我使用了 c *= len(s[i]) 嗎? 我該如何解決這個問題?
def g(s):
s = [int(i) for i in s]
print(s)
m = len(s)
num = 0
while m>0:
if s[num] == 2:
s[num] = ["a","b","c"]
elif s[num] == 3:
s[num] = ["d","e","f"]
elif s[num] == 4:
s[num] = ["g","h","i"]
elif s[num] == 5:
s[num] = ["j","k","l"]
elif s[num] == 6:
s[num] = ["m","n","o"]
elif s[num] == 7:
s[num] = ["p","q","r", "s"]
elif s[num] == 8:
s[num] = ["t","u","v"]
elif s[num] == 9:
s[num] = ["w","x","y", "z"]
else:
s[num] = [" "]
m -=1
num +=1
c = [[i] for i in s[0]]
for i in range(1,len(s)):
print("i",i)
c *= len(s[i])
print(c[0])
for j in range(len(s[i])):
print("j",j)
if len(s[i])==3:
for k in range(j*3, (j*3)+len(s[i])):
print("k",k)
c[k].append(s[i][j])
print(c)
else:
for k in range(j*4, (j*4)+len(s[i])):
print("k",k)
c[k].append(s[i][j])
print(c)
return c
您會發現 itertools 對此很有用。
從常量字典開始。 無需將數字轉換為整數。
這應該工作...
from itertools import product
KEYBOARD = {'2': 'abc',
'3': 'def',
'4': 'ghi',
'5': 'jkl',
'6': 'mno',
'7': 'pqrs',
'8': 'tuv',
'9': 'wxyz'}
def g(s):
lst = [KEYBOARD[c] for c in s]
return [''.join(p) for p in product(*lst)]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.