我是python新手。當我試圖將列表字符串及其索引複製到由循環創建的列表變量時,我返回一個空列表。但是,在複製之前打印列表將返回所需的所有數據。從列舉的列表的索引追加列表B A
本網站給了我一個使用切片b = a [:](http://henry.precheur.org/python/copy_list)的想法。當我從同一個網站使用這種技術b = list(a)時,它也不起作用。
我的目標是爲用戶輸入字符串中的每個唯一字符創建一系列僅包含一個列表的列表。每個列表將以唯一字符開頭,後面跟着原始用戶字符串中每個字符出現的索引。
for i, value in enumerate (xlist):
exec "var%i=list()" %(i)
exec "global var%i" %(i)
def enum():
global character_count
global xlist
for i, value in enumerate (xlist):
exec "global var%i" %(i)
for i, value in enumerate(xlist):
if value=="%s" %str(xlist[character_count]):
value=[value]
value.append(i)
print value
"""<--This returns a full list"""
exec "var%i=value[:]" %(i)
exec "print var%i" %(i)
"""<-- This returns an empty list"""
def enum2():
global character_count
global xlength
while character_count<xlength:
enum()
character_count=character_count+1
continue
enum2()
print var38
"""output ['?', 38]
output []
desired output ['?', 38]
desired output ['?', 38]"""
我越來越接近我想要更新字典。 但是,這僅返回每個唯一字符的一個索引。我想要所有的指數。
應該使用集而不是字典來將索引附加到鍵/集?這是可能的字典?
"""Output
Input: Hello
{'h': 0, 'e': 1, 'l': 3, 'o': 4}
Desired
{'h': 0, 'e': 1, 'l': [2, 3], 'o': 4}"""
string=raw_input("Input: ")
string_lower=string.lower()
string_list=list(string_lower)
string_dict = dict()
for i, j in enumerate(string_list):
string_dict.update({j:i})
print string_dict
答案已找到!
每當你想要創建循環中的新變量,你真正需要的是一個變量,它包含一個列表或字典。在這種情況下,你應該把它們附加到列表中,而不是'var0','var1','var2'等等。 – user2357112
你真的不應該使用exec和/或eval,除非你在我看來做的事情要低得多。動態創建全局變量是一個*糟糕的*,危險和低效的想法,爲什麼不創建一個你想要的對象的列表或字典並將其傳遞? – Kamikai
我只是重複這一點。 **不要**使用''eval'',''exec''或''global''。見上面的其他評論。 –