Я использую random.shuffle неправильно или это ошибка?

1

Поэтому я перетасовываю список, прежде чем разбить его. это список чисел, считанных из файла, поэтому список на самом деле является списком строк, но это числа:

streams = ['0','1','2','3','4','5','6','7','8','9']

теперь, код, который я запускаю, просто перетасовывает список:

print(streams, type(streams[0]))
import random
random.shuffle(streams)

Кстати, я использую Python 3.6.4. Вот ошибка, которую я получаю:

C:\src>python cli.py
0,1,2,3,4,5,6,7,8,9
 <class 'str'>
Traceback (most recent call last):
...
  File "....py", line 3, in split_randomized_list
    random.shuffle(streams)
  File "C:\ProgramData\Anaconda3\lib\random.py", line 275, in shuffle
    x[i], x[j] = x[j], x[i]
TypeError: 'str' object does not support item assignment

Это говорит мне, что он не может перетасовывать списки, состоящие из чисел в строчном формате? Это правильно? Это ошибка, или я делаю это неправильно?

  • 0
    @U9-Forward U9-Forward На какой версии Python вы работаете?
  • 0
    Я не думаю, что версия имеет значение, моя версия Python-3.6.0
Показать ещё 1 комментарий
Теги:
random
shuffle

2 ответа

1
Лучший ответ

Другой способ:

streams = "0,1,2,3,4,5,6,7,8,9"
new_streams = streams.split(',')
import random
random.shuffle(new_streams)
print(new_streams)
1

Я думаю, что мне удалось реплицировать вашу ошибку, я поменял ваши потоки на список.

streams_old = "0,1,2,3,4,5,6,7,8,9"
streams = ['0','1','2','3','4','5','6','7','8','9']

print(streams, type(streams[0]))
import random
random.shuffle(streams)
  • 0
    о, спасибо, я предполагаю, что это был список, когда его не было
  • 2
    @LegitStack было очень обманчиво ставить streams = ['0','1','2','3','4','5','6','7','8','9'] в вашем вопросе ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню