#python #list
#python #Список
Вопрос:
nameList = ["sam", "tom", "jack", "james" , "robbie", "Lewis"]
id = 1
Существует список имен и идентификатор, инициализированный как 1.
Я хочу присвоить идентификатор имени для первых 2 имен в списке, а затем увеличить идентификатор.
Мой фрагмент кода до сих пор:
nameList = ["sam", "tom", "jack", "james" , "robbie", "Lewis"]
id = 1
for names in nameList:
print names "," str(id)
id = id 1
Желаемый результат:-
sam,1
tom,1
jack,2
james,2
robbie,3
Lewis,3
Любая помощь? Спасибо
Ответ №1:
Вы можете попробовать использовать enumerate и проверить, является ли индекс строки четным. Если это так, увеличьте id
:
nameList = ["sam", "tom", "jack", "james" , "robbie", "Lewis"]
id = 0
for i, names in enumerate(nameList):
if i % 2 == 0: # if 'i' is even
id = id 1 # or id = 1, both are equivalent
print names "," str(id) # if all elements are strings, 'str()' is not required
Обратите внимание, что на каждой итерации i
будут приниматься числа в диапазоне [0, length-1]
Ответ №2:
Вы можете просто перебирать список с enumerate
помощью и с помощью (index / 2) 1
, вы можете получить фактическое значение, которое хотите распечатать
nameList = ["sam", "tom", "jack", "james", "robbie", "Lewis"]
for idx, item in enumerate(nameList):
print "{}, {}".format(item, (idx / 2) 1)
Вывод
sam, 1
tom, 1
jack, 2
james, 2
robbie, 3
Lewis, 3
Комментарии:
1. Мне нравится этот ответ лучше, чем принятый. Не обижайтесь на принятое, но это проще. 1
2. Отличный ответ, просто хотел указать на несоответствие:
(index 2) / 1
перевернуто плюс и деление.
Ответ №3:
for names in nameList:
print names "," str((id 1)/2)
id = id 1
Ответ №4:
nameList = ["sam", "tom", "jack", "james" , "robbie", "Lewis"]
def counter(start, duplicate_amt=1):
while True:
for _ in range(duplicate_amt):
yield start
start = 1
for name, _id in zip(nameList, counter(1, 2)):
print("{},{}".format(name, _id))
Я предпочитаю этот способ, потому что, если вы хотите увеличить его после x вместо 2 итераций, вы можете изменить его на counter(1, x)
Ответ №5:
id=1
c=0
for name in nameList:
if c<=2:
c =1
else:
id =1
c=1
print "{}, {}".format(name,id)