374. 猜数字大小(Python)

374. 猜数字大小(Python),第1张

难度:★★☆☆☆

类型:数组

我们正在玩一个猜数字游戏。 游戏规则如下:

我从 1 到 n 选择一个数字。 你需要猜我选择了哪个数字。

每次你猜错了,我会告诉你这个数字是大了还是小了。

你调用一个预先定义好的接口 guess(int num),它会返回 3 个可能的结果(-1,1 或 0):

-1 : 我的数字比较小

1 : 我的数字比较大

0 : 恭喜!你猜对了!

输入: n = 10, pick = 6

输出: 6

这道题和 题目278 第一个错误版本 的题意和解法基本相同,这里直接使用二分法进行判断。

如有疑问或建议,欢迎评论区留言~

数组允许进行批量 *** 作而无需使用for循环,因此更加简便,这种特性也被称为向量化。任何两个等尺寸之间的算术 *** 作都应用逐元素 *** 作的方式进行。

同尺度数组之间的比较,会产生一个布尔型数组。

上述 *** 作均是在同尺度数组之间进行的,对于不同尺度数组间的 *** 作,会使用到广播特性。

索引:获取数组中特定位置元素的过程;

切片:获取数组元素子集的过程。

new_a = aastype(new_type)

astype()方法一定会创建新的数组(原始数据的一个拷贝),即使两个类型一致。

ls = atolist()

转置是一种特殊的数据重组形式,可以返回底层数据的视图而不需要复制任何内容。

数组拥有 transpose 方法,也有特殊的 T 属性。

对于更高纬度的数组, transpose 方法可以接受包含轴编号的元组,用于转置轴。

ndarray的 swapaxes 方法,通过接受一对轴编号作为参数,并对轴进行调整用于重组数据。

swapaxes 方法返回的是数据的视图,而没有对数据进行复制。

Reference:

《Python for Data Analysis:Data Wrangling with Pandas,Numpy,and IPython》

1、Python的数组分三种类型:

(1) list 普通的链表,初始化后可以通过特定方法动态增加元素。定义方式:arr = [元素]

(2) Tuple 固定的数组,一旦定义后,其元素个数是不能再改变的。定义方式:arr = (元素)

(3) Dictionary 词典类型, 即是Hash数组。定义方式:arr = {元素k:v}

2、下面具体说明这些数组的使用方法和技巧:

(1) list 链表数组

a、定义时初始化

a = [1,2,[1,2,3]]

b、定义时不初始化一维数组:

arr = []

多维数组: arr = [i for i in range(10), 1,[]] #注意, i for in xx 这个必须放在第一个位置,否则要先定义i,

如:

arr = [i for i in range(5), j for j in range(5), []]

这是错误的

这是正确的

c、del 语句和 : 的用法

可以用 start : end 表示数组里的一个区间 ( i >= start and i < end)

del 删除数组里的指定元素

如:

d、遍历数组:

e、增加元素:

一维 arrappend('aaa')

二维 arr[0]append('aaa')

如果要在任意位置插入用 arrinsert(n, 值)

此外还有一种特殊的用法是:

arr += [数组元素]

在不指定下标的情况下,是允许用 += 增加数组元素的。

(2) Tuple 固定数组Tuple 是不可变 list,一旦创建了一个 tuple 就不能以任何方式改变它。

下面拿具体示例说明:

Tuple 没有的方法:

[1] 不能向 tuple 增加元素,没有 append 、 extend 、insert 等方法。

[2] 不能从 tuple 删除元素,没有 remove 或 pop 方法。

[3] 不能在 tuple 中查找元素,没有 index 方法(index是查找而不是索引,索引直接用下标即可,如:t[0])。

使用 tuple 的好处:

Tuple 可以转换成 list, 反之亦然。

转换方式为:

反之:

(2) Dictionary (哈希数组)词典数组

Dictionary 的用法比较简单,它可以存储任意值,并允许是不同类型的值,下面实例来说明:

下面例子中 a 是整数, b 是字符串, c 是数组,这个例子充分说明哈希数组的适用性。

可以直接增加一个元素,如果同名,则会改变原来的key的元素的值

输出所有的key

输出所有的value

遍历数组

int a; //基本整型

long int b; //长整型

char c; // 字符型

float d; // 单精度浮点型

double e; //双精度浮点型

char s[20]; // 字符型数组 或 字符串 型

对Python中数组的几种使用方法总结

今天小编就为大家分享一篇对Python中数组的几种使用方法总结,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

二维数组的初始化

matirx_done = [[0 for i in range(0, len(matirx))]for j in range(0, len(matirx[0]))]

就将其初始化为一个与matrix相同大小的元素全为 0 的矩阵

数组的多级排序

在数组 idea_collect = [[3, 1, 2], [3, 2, 1], [3, 2, 2], [3, 1, 1]] 中, 先按照第二项排列, 再按照第三项倒序排列 可写为:

idea_collectsort(key=lambda x: (x[1], -x[2]))

其中, x[1] 代表第二项正序排列, -x[2] 代表第三项倒序排列

排列结果为 [[3, 1, 2], [3, 1, 1], [3, 2, 2], [3, 2, 1]]

在一个 class 中多个函数不传参使用同一个数组

如例所示:

class Partition:

def __init__(self):

selfnum_complete = []

def partition(self, num, start, end):

selfnum_compelete = num

def partition_core(self):

del selfnum_compelete[0]

其中,selfnum_compelete就是 class 中两个函数同时可以直接调用的数组, 不过最好先在def __init__中声明这个数组

以上这篇对Python中数组的几种使用方法总结就是小编分享给大家的全部内容了

# 初始数组举例

ls = [10, 35, 21, 55, 31]

# 只要数组两个数是最大和第二大,那么面积一定最大

# 倒序排序数组

lssort(reverse=True)

# 取前两位,并乘积

print('{}和{}组成面积最大,为{}'format(ls[0], ls[1], ls[0] ls[1]))

参考代码如下:

using System;

using SystemCollectionsGeneric;

using SystemLinq;

using SystemText;

namespace FindMaxWithIndex

{

/// <summary>

/// 有一个数组,每个元素的值都是实数,请写出求最大元素的值及其位置的算法

/// </summary>

class Program

{

static void Main(string[] args)

{

double[] Num = new[] { -8, 45439, 45439, 3, 45, 6547, 7, 66, 35, 45, 4, 6, 45439, 5, 46, 54, 6, 43, 5980, 34, 45439 };

//double[] Num = new [] { 10, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 };

int[] index = SearchMaxWithIndex(Num);

ConsoleWriteLine("The max number is: {0}", Num[index[0]]);

ConsoleWrite("The index of max number is:");

for (int i = 0; i < indexLength; i++)

{

if (index[i] == -1) break;

ConsoleWrite(" '{0}'", index[i]);

}

ConsoleReadKey();

}

private static int[] SearchMaxWithIndex(double[] arr)

{

int[] pos = new int[arrLength]; //记录最大值所在位置的数组

int position = 0; //初始设定数组的第1个元素为最大值

int j = 1;//j指示位置数组pos的下标

for (int i = 1; i < arrLength; i++)

{

if (arr[i] > arr[position])

{

position = i; //记下新的最大值的位置

j = 1; //位置数组pos的下标恢复为1,下标为0的位置为position预留

}

else if (arr[i] == arr[position])

pos[j++] = i; //记下重复最大值的位置

}

pos[0] = position; //位置数组pos的下标为0的位置为position预留

if (j < arrLength) pos[j] = -1; //-1为标识值,表示位置数组pos下标为0, 1, 2…(j-1)的位置存放的是最大值所在的位置

return pos;

}

}

}

以上就是关于374. 猜数字大小(Python)全部的内容,包括:374. 猜数字大小(Python)、Python——ndarray多维数组基本 *** 作(1)、python数组的使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/10160224.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-05
下一篇 2023-05-05

发表评论

登录后才能评论

评论列表(0条)

保存