我想输入一组数字,用空格隔开,怎么将这串字符串转化成列表
时间: 2024-03-08 10:50:56 浏览: 53
可以使用 Python 内置的 `split()` 方法将这个字符串按照空格进行分割,然后将分割后的结果存储到一个列表中。具体的实现如下所示:
```python
string = "1 2 3 4 5"
lst = string.split()
print(lst)
```
运行结果如下:
```
['1', '2', '3', '4', '5']
```
需要注意的是,`split()` 方法默认以空格作为分隔符,如果您的字符串中使用的是其他的分隔符,可以在 `split()` 方法中传入相应的参数来指定分隔符。
相关问题
shell空格隔开的字符串转数组
可以使用`read`命令结合数组来实现。
假设有一个空格隔开的字符串如下:
```
str="apple banana orange"
```
可以使用`read`命令将字符串转化为数组:
```
read -ra arr <<< "$str"
```
其中,`-ra`表示将输入读入到数组中,并且使用空格作为分隔符。`<<<`表示将字符串作为输入传递给`read`命令。
现在,数组`arr`中存储了字符串中的每个单词。可以通过遍历数组来访问这些单词:
```
for word in "${arr[@]}"; do
echo "$word"
done
```
输出:
```
apple
banana
orange
```
用C实现:描述 用基数排序算法,对-1000000 ~1000000以内的整数,进行升序排序。 输入描述 输入一组整数,数字之间以空格隔开。 输出描述 按照升序顺序输出结果,数字之间以空格隔开。
好的,下面是使用C语言实现的基数排序算法代码。基数排序算法的实现和Python实现类似,只是需要手动处理字符串和数字之间的转换。
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_N 1000000
// 基数排序算法
void radix_sort(int *arr, int n) {
// 求最大值和最小值
int max_val = arr[0], min_val = arr[0];
for (int i = 1; i < n; i++) {
if (arr[i] > max_val) max_val = arr[i];
if (arr[i] < min_val) min_val = arr[i];
}
// 将所有数字转化为相同位数
char str_n[20], str_min_val[20];
sprintf(str_n, "%d", max_val - min_val);
sprintf(str_min_val, "%d", min_val);
int len = strlen(str_n);
char **str_arr = (char **)malloc(n * sizeof(char *));
for (int i = 0; i < n; i++) {
char *str = (char *)malloc((len + 1) * sizeof(char));
sprintf(str, "%d", arr[i] - min_val);
int str_len = strlen(str);
for (int j = 0; j < len - str_len; j++) {
char *temp = (char *)malloc((str_len + 2) * sizeof(char));
strcpy(temp, "0");
strcat(temp, str);
free(str);
str = temp;
}
str_arr[i] = str;
}
// 从最低位开始排序
for (int i = len - 1; i >= 0; i--) {
// 计数排序
int count[10] = {0};
for (int j = 0; j < n; j++) {
count[str_arr[j][i] - '0']++;
}
for (int j = 1; j < 10; j++) {
count[j] += count[j-1];
}
int *res = (int *)malloc(n * sizeof(int));
for (int j = n - 1; j >= 0; j--) {
int index = str_arr[j][i] - '0';
res[--count[index]] = arr[j];
}
// 将当前位排序后的结果复制到原始数组中
for (int j = 0; j < n; j++) {
arr[j] = res[j];
free(str_arr[j]);
}
free(res);
}
free(str_arr);
}
int main() {
// 输入
int n, arr[MAX_N];
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d", &arr[i]);
}
// 排序
radix_sort(arr, n);
// 输出
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
这是一个完整的C语言程序,你可以将其保存为一个文件,例如radix_sort.c,使用gcc编译器进行编译,例如:
```
gcc radix_sort.c -o radix_sort
```
然后运行程序,输入一组整数,即可得到排序后的结果。
阅读全文