Списки и индексы дают ошибку, потому что список вне диапазона

Я получаю сообщение об ошибке, когда пытаюсь запустить свою функцию. Я знаю причину. но я ищу способ это исправить.

list2=['name','position','salary','bonus']
list3=['name','position','salary']


def funtionNew(list):
    print(len(list))
    po= '{} {} {} {}'.format(list[0],list[1],list[2],list[3])
    print(po)


funtionNew(list3)

Так что я могу сделать это для list2

po='{}{}{}{}'..format(list[0],list[1],list[2],list[3])

и сделать это для list3

po='{}{}{}'..format(list[0],list[1],list[2])

2 ответа

Решение

Попробуйте следующее:

def funtionNew(list):
    print(len(list))

    string_for_formatting = '{} ' * len(list)
    po = string_for_formatting.format(*list)

    print(po)

Это создает строку с переменным числом {} терминов в соответствии с длиной вашего списка, а затем использует формат в списке. Звездочка *, распаковывает элементы вашего списка в качестве входных данных для функции.

Из реализации функции кажется, что вы пытаетесь объединить элементы списка с пробелами между ними, чтобы вы могли попробовать вместо этого -

po=' '.join(list)

Это не зависит от длины списка, однако вы должны убедиться, что все элементы в списке являются строками. Таким образом, вы можете сделать следующее -

po = ' '.join[str(s) for s in list]
Другие вопросы по тегам